Johannesburg: A remarkable spell by Stuart Broad inspired England as they beat South Africa by seven wickets in the third Test to secure a series victory.
In one of his trademark hot streaks, Broad took 5-1 in 31 balls as the hosts were bowled out for 83 in Johannesburg.
Broad ended with 6-17, while Ben Stokes claimed 2-24 and James Taylor held two stunning catches at short leg.
England, earlier bowled out for 323, were taken to their target of 74 by Alastair Cook's 43 for a three-day win.
Cook's men go 2-0 up, with only the fourth Test still to play, for a first overseas series victory since 2012.
Regardless of the result of the final match in Centurion, South Africa will be replaced by India at the top of the world rankings.
Broad had taken five wickets in a single spell on six previous occasions, the most famous of which were Ashes-winning hauls at The Oval in 2009, Chester-le-Street in 2013 and Trent Bridge in 2015.
This was just as devastating, not least because the match was finely poised, with England holding only a 10-run first-innings lead.
On a pitch offering bounce and seam movement, and under a grey sky, Broad's hostility and accuracy was too much for a South Africa batting line-up that did little wrong, but had no answers.
Immediately after lunch, Broad bowled six overs to claim the first five wickets to fall - the one run he did concede was a dropped catch. This is how the collapse unfolded:
The huge margin of England's victory seemed so unlikely after South Africa had the better of the morning session. From 238-5 overnight, the tourists lost their last five wickets for 81 runs.
Joe Root added only four to his 106 before playing a loose drive at Rabada, who would go on to claim his first five-wicket haul.
Bairstow's 45 nudged England into the lead, but when he skied to mid-on to become the last man to fall it looked as though Cook's side had wasted the opportunity for a match-winning lead.
Then came Broad's devastating spell and, after that, England's chase was a formality.
South Africa - 313 (Elgar 46, Stokes 3-53) and 83 (Broad 6-17)
England - 323 (Root 110, Stokes 58, Rabada 5-78, Morkel 3-76) and 77 for 3 (Cook 43)
Status - England won by seven wickets