Big centuries from batsmen Hashim Amla and AB de Villiers afforded South Africa a hefty second-innings total - and record lead - on day three of the third and final Test against Australia at the WACA in Perth.

Amla's impressive 196 and De Villiers' outstanding 169 left the Australians 631 runs in the red, which they reduced to 591 before the close of play thanks to an unbroken 40-run alliance between openers David Warner and Ed Cowan.

Sunday belonged almost entirely to the centurions, with Amla welcoming the 18th century of his career - and 1,000 runs for the calender year - and De Villiers putting to bed questions around his role as wicketkeeper-batsman.

The hosts' new-look seam attack was largely ineffective in the face of the twin centurions' collective onslaught, although Mitchell Johnson found some late venom to land a four-for. Mitchell Starc, meanwhile, used the new ball well to finish with a maiden Test six-for amid the opposition's late-order heave.

South Africa had taken control on day two and closed at 230 for two, 292 runs in front.

By lunch on day three that lead had been lifted to 382, with Amla serene on 149 not out and Jacques Kallis the only man out in a total of 320 for three.

Amla started the morning on 99 but showed no hint of nerves as he tapped the third ball for a single to register his 18th Test century.

A first boundary of the day followed in Johnson's second over, driven wide of mid-off by Amla, who offered a tough chance on 108 when he hit a woeful Johnson full-toss hard towards gully.

Michael Hussey got a hand to it but could not cling on and instead Amla picked up his second four in as many balls.

Kallis, batting within himself, hit his first four of the day off John Hastings in the 10th over and Amla continued to pepper the ropes, passing 1,000 runs for 2012 with another boundary.

Kallis eventually departed for 37 in 65 balls, top-edging a Mitchell Starc bouncer to Johnson at fine leg.

Amla's innings was unaffected and De Villiers offered solid support to accompany him to lunch, grinding out 18 runs in the process. By the break Amla had scored 149.

He went on to score 196, including 21 fours, before Johnson claimed a difficult caught and bowled chance.

The unfortunate Dean Elgar bagged a pair of ducks on debut as he was trapped lbw by Johnson to a fourth ball faced.

But that was the last joy for the home side in the session as De Villiers took over where Amla left off with Faf du Plessis providing good support.

After tea Johnson went on to claim his fourth wicket and also fourth catch of the innings as he gave the home crowd something to cheer about.

Du Plessis had scored 27 before he guided Johnson into the hands of Michael Clarke at wide slip.

Robin Peterson had failed to trouble the scorers when he was caught by Johnson off Starc with the total on 539 for seven.

Starc went on to claim his fourth wicket when De Villiers fell for 169, caught behind by Matthew Wade after an innings that included 21 fours and three sixes and coming off just 184 balls, with the total on 557 and the lead at over 600.

Starc made it a five-wicket haul when Dale Steyn clipped a rising ball behind to Wade and departed for eight.

Starc finished with six for 154 as he bowled Morne Morkel for a duck to end the South Africa innings 569 on and a lead of 631.

Australia's reply had reached 40 without loss, with David Warner on 29 and Ed Cowan nine not out from 13 overs when the third day's play came to a close.

That left the home side still needing 592 runs to win or two days to bat out and save the Test and deny the Proteas what would be a series-winning victory in a match which carries the extra bounty of the world number one spot.