Stuart Broad ripped through South Africa's tail to allow England to enforce the follow-on on the fourth morning of the third Test before rain interrupted their victory charge at St George's Park.
The hosts are 0-15 in their second innings, still 275 runs behind England's 9-(dec)499 after South Africa capitulated for 209 as they lost four wickets for a single run added when play resumed on day four.
Dean Elgar (13 not out) and Pieter Malan (1 not out) began South Africa's second innings with the home side needing to negotiate the best part of five sessions to salvage a draw, potentially aided by rain showers forecast for Sunday and Monday.
South Africa had resumed on 6-208 with Vernon Philander (27) and Quinton de Kock (63) having put on 54 for the seventh wicket but facing the new ball.
It took Broad (3-30) only six balls to make the breakthrough, finding some seam movement to have Philander clean bowled.
De Kock followed five balls later, with seamer Sam Curran hitting the top of middle stump.
That realistically ended South Africa's hopes of avoiding the follow-on. Keshav Maharaj (0) chopped a Broad delivery onto his stumps and Kagiso Rabada (1) chipped Broad to Mark Wood at mid-off.
Spinner Dom Bess finished the innings with career-best figures of 5-51.
Australian Associated Press