Kallis was 131 not out at tea on the second day of the second test, helping South Africa to 251-2 and a lead of 63 runs over New Zealand.
Kallis' 29th century was also his fastest, coming off 143 balls.
The all-rounder and Hashim Amla, who was 77 not out, shared a stand of 220 for the unbroken third wicket.
New Zealand had resumed on 187-8 but were dismissed just four balls into the first over of play when Chris Martin edged a delivery from paceman Makhaya Ntini and was caught by Kallis at second slip without scoring.
Martin's wicket ended New Zealand's innings with opener Craig Cumming, who retired hurt on 48 yesterday and spent the night in intensive care with a fractured cheekbone and jaw after being felled by a bouncer from fast bowler Dale Steyn, unable to continue his innings.
Medium pacer Martin returned to remove openers Graeme Smith and Herschelle Gibbs by the ninth over of South Africa's reply.
Smith was dismissed with the last ball of the first over, which he chopped onto his stumps to be bowled for two.
Martin (2-50) then bowled Gibbs for 25 with a delivery that moved sharply off the seam towards the right-hander.
Reduced to 31-2, South Africa fought back through Amla and Kallis, who scored steadily and took few risks.
REUTERS PDS KN1948