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 at St George's Park on Friday.
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.
Philander claimed the first Australian wicket when he trapped Chris Rogers leg before for five.
Parnell then accounted for two of the heroes from the first Test, Alex Doolan (eight) and Shaun Marsh (duck), both caught behind by De Villiers.
Marsh now has five ducks in his last 14 Test innings.
Captain Michael Clarke looked fluent in compiling 19 before spooning an easy catch to Dean Elgar at cover as a ball from Philander appeared to hold up in the pitch.
Lyon then held out in brave fashion for the final 37 minutes, surviving a hostile onslaught from Parnell, Morne Morkel and Dale Steyn.
Australia are 1-0 up in the three-match series.
Image: J P Duminy celebrates after completing his hundred
Photograph: Duif du Toit/Gallo Images/Getty Images