South Africa were 221 for four at lunch on Sunday, with Kallis on 104, in reply to Australia's first innings total of 369.
South Africa lost two wickets during the morning's play, while adding 81 runs in 26.4 overs, with batsmen again playing cautiously on a pitch of uneven bounce.
In contrast to his attacking play at the start of his innings Saturday, when he reached his half-century off 49 balls, Kallis was watchful Sunday morning.
Australia struck an early blow when AB de Villiers was caught at gully by Matthew Hayden off Stuart Clark for 50, after adding two to his overnight score, off the 12th ball of the day. De Villiers and Kallis put on 134 for the third wicket.
Kallis played only four scoring strokes in the first hour, three singles and a pulled four off Clark, as he moved from 72 to 79.
Left-hander Ashwell Prince was more aggressive, making 33 before he was caught at square leg off Shane Warne, dancing down the pitch but mistiming an attempted hit to midwicket.
Kallis survived a concerted appeal for a catch behind the wicket off Brett Lee when he was on 73 but television replays indicated umpire Steve Bucknor made the right decision, with the ball appearing to deflect off his arm.
Kallis reached his third century against Australia in the last over before lunch when he punched Warne through the covers for his 17th boundary. His second fifty took 124 balls.
Australia lead the three-match series 1-0.