David Warner's century and Mitchell Johnson's seven-wicket haul put Australia in complete control after day three of the first Test against South Africa at Centurion.

Johnson (seven for 68), man-of-the-series in Australia's 5-0 Ashes whitewash over England this winter, had already done plenty of damage on Thursday to the world number one Test team's batting line-up.

And the left-armer took three more wickets on Friday morning to go past former Test captain Richie Benaud to a career tally of 249 and seventh in Australia's all-time list as the hosts were bowled out for 206 to trail by 191 in the first innings.

Warner (115), Australia's top run-scorer against England, was soon at it again as the tourists increased their overall advantage to 479 by stumps.

The left-hander contributed his sixth Test hundred, sharing a double-century second-wicket stand with debutant number three Alex Doolan (89).

South Africa had earlier managed to add 66 runs for their last four wickets, thanks largely to AB de Villiers' 91.

Only the wicketkeeper-batsman could handle Johnson for long, resisting for 148 balls and hitting 10 fours and two sixes.

Eventually even he fell to the rampant fast bowler but in contrasting fashion to his team-mates - ninth out, just failing to clear mid-off rather than being bounced or bowled out.

Australia's second innings got off to a bad start in a short session just before lunch when opener Chris Rogers chopped Dale Steyn's first delivery down on to his stumps in the second over.

But Warner and Doolan then began to put Australia out of sight.

Warner was dropped twice in the 20s, once by substitute fielder Dean Elgar running in from long-leg from a faulty pull at Vernon Philander, and then head-high at slip by Alviro Petersen off Morne Morkel.

Captain Graeme Smith was also unable to hold on to another tough chance to see off Warner, who profited to reach his 118-ball hundred when he hit his 13th four to go with two sixes.

By then Doolan, after an especially watchful start, also had a maiden Test 50.

Warner eventually departed via a sharp edge off slow left-armer Robin Peterson to Smith at slip, and 28-year-old Tasmanian Doolan fell short of a hundred on debut when he nicked a short one behind trying to cut part-time off-spinner JP Duminy.

But first-innings centurion Shaun Marsh and captain Michael Clarke helped Australia to 288 for three at stumps, and South Africa are therefore sure to be set a mammoth target.