Morne Morkel took two wickets to restrict struggling Australia to 88-3 at the close on the fourth day of the final Test as South Africa marched towards an emphatic victory.
Having set Australia a massive 612 for a win that would level the series, the home side removed the tourists' top three batsmen, despite injury concerns over their pace trio which delayed South Africa's declaration until the tea interval.
Peter Handscomb (23) and Shaun Marsh (7) will set about saving the Test on the fifth day, but only a near impossible victory would ensure Australia avoid a first series defeat in South Africa for almost 50 years.
The home side have injury worries over all their fast bowlers, though, with Kagiso Rabada suffering from a stiff lower back, Morkel struggling with a side strain and Vernon Philander nursing a groin problem.
That meant they limited the number of overs the trio would have to bowl as the hosts declared on 344-6 after an eighth Test ton from captain Faf du Plessis (120), the first time in 11 innings he passed fifty.
Morkel, however, struck from the 10th ball he bowled in his final Test innings before retirement, trapping Matt Renshaw (5) lbw - the opener having been earlier dropped by Temba Bavuma at gully.
South Africa's second wicket was more controversial as Usman Khawaja (7) was given out lbw by umpire Nigel Llong off the bowling of spinner Keshav Maharaj.
The ball struck the left-hander outside the line of off-stump, but Llong and third umpire Richard Illingworth agreed he had not been offering a shot, a decision the Australian clearly felt was wrong.
Opener Joe Burns (42) had looked in good touch until he became the third batsman trapped in front, this time from a rare Morkel yorker that was hitting middle stump, before bad light forced an early close.
Pat Cummins earlier finished with 4-58 to record match figures of 9-141.
Watch day five of the fourth Test between South Africa and Australia, live from 8.55am on Tuesday on Sky Sports Cricket (channel 404) and Sky Sports Main Event (channel 401).