Captain Joe Root top scored as England took a huge 465-run lead over South Africa on the third day of the fourth test and were bowled out for 248 just before stumps in their second innings at The Wanderers on Sunday.
The score left them with two days to dismiss their hosts, who will have to chase an improbable fourth-innings target if they are to win the test and level the series at 2-2.
Fourteen wickets fell on a busy Sunday that saw South Africa dismissed for 183 at lunch, 217 runs behind Englands first-innings score of 400.
Root did not enforce the follow on but instead rammed home his teams advantage as England batted briskly in their second innings before the captain was the last man out, superbly caught by South African counterpart Faf du Plessis to give debutant Beuran Hendricks a maiden test five-wicket haul.
Root scored 58, Dom Sibley made 44, Sam Curran an entertaining 35 and Ben Stokes 28 with Hendricks finishing on 5-64 off 15.3 overs.
Openers Zak Crawley and Sibley put on a 56-run opening-wicket partnership in a positive second-innings start before Crawley was out for 24.
Stokes was in belligerent mood, having been fined for verbally abusing a spectator after going cheaply in the first innings, and sought to get retribution as he raced to 28 off 24 balls, with six boundaries, before Hendricks had him caught in the slips.
Curran also made up for a first baller in the first innings as he accelerated the run rate in the last hour before being caught in the deep off Hendricks.
All the while Root kept the scoreboard ticking over to ensure South Africa will have to chase a world-record fourth innings target on a pitch where the bounce was becoming increasingly more uneven.
South Africa bowled a man light when veteran Vernon Philander pulled up with a hamstring injury after nine balls, further weakening a home attack already sorely missing the suspended Kagiso Rabada.
Philander was sent to hospital for a scan, said Cricket South Africa, threatening an inglorious end to his test career as he is retiring from the international arena.
Mark Wood completed a five-wicket haul earlier as South Africa were dismissed in the morning session, adding 95 runs to their overnight score.
“I’m over the moon — a very special day,” said Wood, who credited a shorter run-up for his success.
“Since I have (done that), it’s been a lot better. I’ve got a little bit more momentum; it’s taken pressure off my body. It’s been nice to take a load off.”