Johannesburg - Stuart Broad took 6/17 as South Africa crumbled to 83 all out in the third Test at the Wanderers on Saturday.
It means that England need just 73 to win the match and the series, and it will take something special if the Proteas are to prevent that from happening.
A five-wicket haul Broad inside his first nine overs left the Proteas in tatters.
At tea the Proteas had fallen to 71/8 - a lead of just 61 as any result either than an England win looked highly improbable.
Having returned from lunch on 16/0, South Africa first lost Dean Elgar for 15 after he nibbled at a good length ball from Broad but edged through to Jonny Bairstow.
Stiaan van Zyl was then put down at second slip by James Anderson off Broad, but the Proteas opener was out for 11 in the England fast bowler's next over when he was lured forward only to edge to Ben Stokes at gully.
The home side knew they were in serious trouble when skipper AB de Villiers out for 0 when he came forward and inside edged Broad to Bairstow once more.
As if things couldn't get any worse, Hashim Amla was then removed for 5 thanks to a blinding catch from James Taylor ... once again off the bowling of Broad.
Amla had timed his leg glance perfectly, but Taylor pulled off a quite miraculous catch as the South African nightmare continued.
Bavuma was next.
The Cape Town centurion tried to leave a shortish ball from Broad, but could only glove it onto the stumps.
Steven Finn then joined the action, and in his first over he had Dane Vilas out for 8 - Taylor taking another blinder at short leg.
Ben Stokes then bowled Chris Morris for 1, and the Proteas were 46/7.
There was some resistance in the form of a 21-run partnership between Kagiso Rabada and Faf du Plessis, but when Rabada was nicked off by Stokes for 16 the Proteas were 67/8 and the end looked near.
Hardus Viljoen made just 6 before he was trapped LBW by Anderson, and Du Plessis was gone for 14 when he looked to attack Broad only to inside edge onto his pads and loop the ball back to the bowler.