De Villiers will resume after the break on 102 along with JP Duminy (59 not out) as the pair put on 123 for the unbroken sixth wicket to vindicate South Africa's decision to play the extra batsman in this test.
Resuming on 214 for five, the pair looked untroubled on the slow Port Elizabeth wicket as they added 109 in an extended session that began 20 minutes early to make up for time lost on the first day when bad light brought a premature end to play.
De Villiers, who on Thursday passed 7000 test runs and became the first player in history to score half-centuries in 12 consecutive five-day matches, reached his 19th test hundred off 201 balls with 13 fours and a six.
Australia captain Michael Clarke was not short of ideas as he tried to remove the world's top-ranked test batsman, at one stage putting four fielders around short mid-wicket and asking Peter Siddle to bowl into De Villiers' pads.
The right-hander, though, was not bothered as he lofted the ball over their heads for six, a sign of South Africa's determination to carry the fight to Australia in this match after capitulating in the 281-run defeat in the first test in Pretoria.
Duminy, who had averaged just 11 in his previous seven test innings, was far more fluent as he manoeuvred the ball around.
(Editing by Sudipto Ganguly)
