JP Duminy, AB de Villiers, Wayne Parnell and Vernon Philander put South Africa on top as they reduced Australia to 112 for four on the second day of the second Test.
South Africa first innings 423
Australia first innings
C Rogers lbw b Philander 5
D Warner not out 65
A Doolan c de Villiers b Parnell 8
S Marsh c de Villiers b Parnell 0
M Clarke c Elgar b Philander 19
N Lyon not out 12
Extras (lb 3) 3
Total (4 wickets; 25 overs) 112
Fall of wickets 1-7, 2-41, 3-41, 4-81
All-rounder Parnell, playing his first Test in four years, and paceman Philander grabbed two wickets apiece after South Africa had amassed 423 in their first-innings thanks to centuries from Duminy and De Villiers.
It might have been even worse for the tourists as wicketkeeper De Villiers dropped David Warner on 43. The left-handed opener was still there on 65 at the close of play with Nathan Lyon 12 not out.
Nightwatchman Lyon was also dropped by Duminy in the gully and received another let-off when South Africa failed to go to the television review after the umpire gave him not out when he edged a rising ball down the leg side straight to De Villiers.
Earlier, Duminy answered his critics with 123 while De Villiers struck 116. Duminy, who averaged 11 in his previous seven Test innings, looked assured from the start on Friday and brought up his third hundred off 199 balls before becoming off spinner Lyon's fifth victim, trapped leg before.
De Villiers, who on Thursday passed 7,000 Test runs and became the first player to score half-centuries in 12 Tests in a row, reached his 19th century off 201 balls. He was removed with the score on 349, offering a sharp caught and bowled chance to Lyon who was the pick of the bowlers with five for 130.
Australia are 1-0 up in the three-match series.