Warner made 121 not out off 132 balls as Australia reached 195 for two at tea.
South Africa suffered a blow when strike bowler Dale Steyn, who took the first wicket, left the field with what appeared to be a hamstring injury midway through the afternoon after bowling one ball of the fourth over of his third spell.
Warner was fined 15 percent of his match fee and criticised by his captain, Michael Clarke, after making 'inappropriate comments' suggesting ball tampering by South Africa after the second Test in Port Elizabeth.
Fellow opener Chris Rogers got the innings off to a good start by hitting two fours in Steyn's first over but Warner quickly became the dominant partner in an opening stand of 65, scored at almost five runs an over.
Also Read
Warner continued to play attacking strokes and reached his fourth successive score of 50 or better with the help of four overthrows after facing just 50 balls.
Alex Doolan made 20 in a second wicket stand of 73 with Warner before he mistimed a pull against Vernon Philander and was well caught by Steyn, running around from mid-on.
Warner, who was dropped five times in his previous three innings of 115, 70 and 66, did not offer a chance in making his seventh Test century although when he was on 95 the South Africans thought he had been caught behind down the leg side by AB de Villiers off Steyn.