Shaun Marsh marked his recall with 122 not out to lead Australia to 297-4 on day one of the first Test against South Africa at Centurion.
Marsh and Steve Smith (91no) shared a fifth wicket stand of 199 after coming together with Australia struggling at 98-4 in early afternoon after being sent in to bat.
South Africa fast bowler Dale Steyn took two of those wickets but, along with his colleagues, began to bowl loosely to aid Australia's recovery.
David Warner (12) inside-edged a cut at Steyn to demolish his own leg stump, bringing Alex Doolan to the middle for his Test debut.
And Morne Morkel wasted no time in bouncing out Chris Rogers (four), brilliantly caught by JP Duminy.
Marsh was dropped on 12, though Hashim Amla did well even to get a hand on the ball, but Doolan, having looked good for his 27, pulled Ryan McLaren straight to midwicket where Robin Peterson took a good diving catch.
It was 83-3 at lunch and captain Michael Clarke fell for 23 in the seventh over of the afternoon session, lured into an injudicious hook against Steyn and caught by Vernon Philander in the deep.
Marsh reached his half-century when he gloved a pull at McLaren to the fine-leg boundary, his seventh four from the 101st ball he faced.
Tea was taken after the 54th over with Australia on 176-4 and the fifth-wicket partnership soon extended into three figures when Marsh hooked McLaren just out of Morkel's reach for four, and two individual landmarks followed.
Smith drilled McLaren through extra cover for his seventh four to reach a 118-ball fifty - and two balls later, Marsh clipped Duminy off his legs to reach 100.
It was only his ninth in a first-class career stretching back to 2001, and contained 11 fours in 174 balls.
Marsh's only previous Test century came on debut against Sri Lanka in Pallekele in September 2011, since when a combination of injury and poor form has stalled his career.
His selection at Centurion was a surprise as he had flown out late to join the tour due to a hamstring injury but made the most of his unexpected opportunity at No 4.
Australia's team showed two changes from the XI that remained unchanged throughout the 5-0 Ashes whitewash of England; Doolan replaced the injured Shane Watson at No 3 and Marsh came in for George Bailey, who did not even make the tour squad.