Cape Town - Jacques Kallis made a career-best 224 and AB de Villiers 160 not out as South Africa battered Sri Lanka's bowlers to declare on 580-4 before tea on the second day of the series-deciding final Test at Newlands.Live scoringKallis celebrated his 150th Test with his best score on Wednesday, hitting 31 fours and a six at his home ground to spearhead South Africa's dominant first-innings effort.He shared a 192-run partnership with De Villiers, who went on to make his 13th Test century after Kallis fell on the stroke of lunch.De Villiers combined for another 127 with Jacques Rudolph (51 not out) in an unbroken partnership after lunch as a rampant South Africa added 233 for the loss of just Kallis on day two before captain Graeme Smith called the batsmen in 40 minutes before tea.Sri Lanka were 29-0 after eight overs of their first innings at tea, still 551 runs behind and needing more than their highest-ever total in South Africa - which is 338 - just to avoid the follow-on.De Villiers hit 19 fours and two sixes in his 160 off 205 balls, playing like a limited overs batsman in the second session with reverse sweeps and slogs over mid-on for six as South Africa chased quick runs before the declaration.Seamer Dhammika Prasad had 2-154 for Sri Lanka's best return, while left-arm spinner Rangana Herath claimed the wicket of Kallis for his 1-108, but the tourists conceded their highest score against South Africa after winning the toss and surprisingly putting the Proteas in to bat.Three of South Africa's top five made centuries - and No 6 Rudolph an unbeaten half-century - and the home team put on successive partnerships of 205, 192 and an unbeaten stand of 127 after losing Smith and Hashim Amla early.Kallis had combined with opener Alviro Petersen (109) for a double-century stand on the first day.On 159 overnight, Kallis continued to punish Sri Lanka's bowling on Wednesday to reach his second Test double century off 280 balls.He took no time to find his range on the second morning in Cape Town with fours off the first two deliveries he faced. He drove his first ball to the boundary and pulled another through square leg straight after.He also survived two dropped catches. Mahela Jayawardene missed a chance off Prasad at second slip when Kallis was on 171. Jayawardene missed another, tougher chance at first slip with Kallis on 183.But other than that, Kallis was in imperious form to keep South Africa rolling relentlessly on.He removed his helmet to again salute his home crowd and South Africa's dressing room after marking his 100 and 150 in the same way on Tuesday. Kallis then passed his previous highest score of 201 not out with a cut to backward point to celebrate his milestone match with a career-best total at his home ground. He thrust his bat into the air in delight.He hammered 10 fours in the session and added 106 runs to South Africa's overnight score of 347-3 alongside De Villiers before he finally fell just a minute and three balls from the lunch break.Sri Lanka's beleaguered bowlers finally broke through when the right-handed veteran mistimed a drive straight to mid-on fielder Angelo Mathews off Herath. Kallis faced 321 balls and batted for over seven hours.Teams:South Africa: Graeme Smith (captain), Alviro Petersen, Hashim Amla, Jacques Kallis, AB de Villiers, Jacques Rudolph, Mark Boucher (wk), Vernon Philander, Dale Steyn, Morne Morkel, Imran Tahir.Sri Lanka: Tillakaratne Dilshan (captain), Lahiru Thirimanne, Kumar Sangakkara, Mahela Jayawardene, Thilan Samaraweera, Angelo Mathews, Dinesh Chandimal (wk), Thisara Perera, Rangana Herath, Dhammika Prasad, Chanaka Welegedara.