Australia were 228 for five at the close of play on Friday. Ponting made 103 before his dismissal in the 80th over was followed by two more wickets after South Africa took the second new ball.
Ponting made three centuries in his country's home series against South Africa earlier in the season, including two at Sydney in his 100th Test match.
He took his total of runs in the past five Tests against South Africa to 693 at an average of 86.63, with four centuries and three half-centuries in nine innings.
It was far from a faultless innings, however, as he survived two chances and needed 224 balls to reach his hundred, 72 balls slower than the slowest of his three centuries in Australia.
He finally reached his 29th Test century - drawing level with Australian legend Don Bradman - when he leant back to square-cut left-arm spinner Nicky Boje to the boundary but he was out to the next ball when he drove Boje to Herschelle Gibbs at short cover.
Makhaya Ntini had Damien Martyn caught at second slip for 57 with his second delivery with the second new ball and then had nightwatchman Brett Lee caught behind.
Andrew Symonds took a heavy blow in the face from the second ball he faced when he failed to evade a bouncer from Ntini but was able to continue after treatment for a bleeding nose and batted through to the close.
Ntini finished the day with three for 50.
Ponting was dropped on five when he gloved Ntini down the legside and wicketkeeper Mark Boucher could not hold a relatively easy chance. On 36 he edged Andre Nel at catchable height between Graeme Smith and Jacques Kallis at first and second slip.
Ponting led a cautious batting performance after he won the toss and batted on a pitch which offered steep bounce, making scoring difficult against disciplined bowling, although the South Africans allowed the batsmen to let too many balls go past the stumps without a shot being played.
South Africa struck in the second over of the match when Ntini had Matthew Hayden caught at third slip before a run was scored.
The total was only 13 in the sixth over when Boucher dropped Ponting.
Justin Langer and Ponting put on 97 for the second wicket and survived some good bowling by Shaun Pollock and Andre Nel immediately after lunch before a change of bowling brought the wicket of Langer, who was caught behind by Boucher off Kallis for 35.
Ponting and Martyn put on 101 for the third wicket.
With his side leading 1-0 in a three-match series, Ponting decided to bat after winning the toss on a warm, sunny day. Australia retained the side that won the first Test in Cape Town by seven wickets inside three days.
Pollock returned to the South African team in place of Andrew Hall after missing the first Test because of a back strain.