South Africa edged into a first-innings lead over Australia on day two of the second Test in Port Elizabeth, closing on 263-7, 20 runs ahead.
The Proteas' hopes of increasing their advantage further on day three lie with AB de Villiers, who is still at the crease, unbeaten on 74 - his knock a crucial one, halting Australia's momentum after a run of four wickets for 28 runs in the evening session.
South Africa were going along nicely on 153-2 at tea, with Dean Elgar (57) and Hashim Amla (56) both notching half centuries of their own, but both were guilty of scoring too slowly - innings' of 197 and 148 balls, respectively - and when a clatter of wickets fell, South Africa suddenly found themselves struggling at 183-6, still some 60 runs behind.
Amla was bowled by Mitchell Starc (1-78), Elgar edged Josh Hazlewood (1-73) behind in the next over and then allrounder Mitchell Marsh (2-26) pitched in with two quick wickets - captain Faf du Plessis (9) and Theunis de Bruyn (1) both falling lbw.
Nathan Lyon (1-29) added the valuable wicket of Quinton de Kock (9), bowled with a beauty that pitched on leg-stump and hit the top of off but, at the other end, De Villiers was serenely going through the gears on his way to a 62-ball fifty.
He helped the hosts into a slender 20-run lead by stumps, with Vernon Philander also unbeaten on 14.
In other news, Kagiso Rabada - chief destroyer of Australia in the first innings, with figures of 5-96 - could be set to sit out the remaining two Tests of the four-match series.
He was charged on Saturday morning by match officials for misconduct after bumping into Australia captain Steve Smith with his shoulder when he dismissed the Australian skipper on the first day.
Rabada faces a two-Test ban if found guilty. Australia currently lead the series 1-0 after their 118-run in Durban.
Watch day three of the second Test between South Africa and Australia, live from 7.55am on Sunday on Sky Sports Cricket.