Joe Root delivered his career-best bowling performance to leave South Africa tottering at 102-6 by the end of the fourth day of the third Test at St George's Park.
Root snaffled four wickets to pile on the misery on the Proteas, who still require 188 runs to avoid a shambolic innings defeat.
England seem assured of snatching a comfortable win to gain an unassailable lead over the hosts in the four-match series.
Another lengthy rain break threatened to stall the momentum of England but they maintained their dominance in the game.
England needed only 28 balls to wrap up South Africa's first innings at the start of day four.
Stuart Broad picked three of the last four wickets to fall as the home side failed to add any run to their overnight total.
Having been bundled out for 209, South Africa were then asked to bat again immediately by England skipper Root.
Mark Wood then wreaked havoc early in the second innings by sending Dean Elgar's off stump flying out of the ground before removing Zubayr Hamza cheaply.
Then Root arrived at the bowling crease having previously never taken more than two wickets in an innings.
He first trapped Pieter Malan leg before wicket in the last over before tea and took three more after the interval.
Rassie van der Dussen was superbly caught at short leg by Ollie Pope and first innings top-scorer Quinton de Kock fell to a leaping catch at backward point by a leaping Wood.
South Africa captain Faf du Plessis was sixth out after making 36, his highest score of what has been a poor series for him. He was another bat-pad victim, giving Pope his fifth catch of the match.
In overcast conditions at the start of play, Broad and Sam Curran achieved some swing with a ball which was almost new, but they were aided by some poor shots by the South African batsmen.
Broad struck with the fourth delivery of the morning when Vernon Philander missed a drive against a full delivery which swung in between bat and pad. He was out for 27.
Curran uprooted De Kock's middle stump with the fifth ball of the next over with the left-hander missing an extravagant drive against a ball angled in from the left-armed bowler.
De Kock had not added to his overnight score of 63.
Keshav Maharaj was bowled off a bottom edge when he tried to pull a ball from Broad before Kagiso Rabada, who scored the only run in the collapse, hit a simple catch to mid-off to give Broad his third wicket.