Stuart Broad stung South Africa with late runs before claiming 3-16 off 10 overs to give England the edge on day two of the first Test, at Kingsmead.
The all-rounder struck 32no and shared in a punchy last-wicket stand of 36 with Steven Finn to steer the visitors to 303 before dismissing Stiaan van Zyl (0), Hashim Amla (seven) and AB de Villiers (49) - the latter for the eighth time in the 11 Tests they've contested.
The scalps boosted Broad's tally for the calendar year to 54 in 14 matches, earning him outright second spot in the global standings behind India's Ravichandran Ashwin (62 wickets in nine games).
Leading the attack in James Anderson's injury-enforced absence, Broad's early double sparked memories of his 8-15 against Australia in the fourth Ashes Test at Trent Bridge before Dean Elgar (67no) helped South Africa improve from 14-2 to 137-4 at stumps - 166 runs in arrears.
England began a day of thrust and counter-thrust on 179-4 and gained some early momentum from Ben Stokes (21) before Nick Compton, chasing a third Test century, picked up his rate against the new ball after scoring seven runs in the first hour.
Durban-born Compton fell tantalisingly short of three figures, though, when he under-edged Morne Morkel (4-76) behind for 85 off 236 balls - walking before the decision was given.
His dismissal sparked a collapse in which England lost four wickets for 20 runs, including two in two balls, as Morkel had Moeen Ali caught behind and trapped Chris Woakes lbw.
His hat-trick ball fizzed past the edge of Broad's bat - the all-rounder surviving to give Jonny Bairstow (41) some much needed support but it still required a last-wicket stand of 36 with Steven Finn to lift England past the 300-mark; Finn contributed 12 before becoming Dale Steyn's 50th Test wicket against England, the fast bowler finishing with 4-70.
Broad continued centre stage with the ball, pegging back Van Zyl's off stump with the second ball of the innings before finding Amla's edge.
Out-of-nick Amla had already been shelled on two by wicketkeeper Bairstow off Chris Woakes - a one-handed diving effort to his right - after surviving a possible edge off Broad the over before.
De Villiers - who has averaged over 80 in home Tests since 2012 - might have also fallen cheaply to Finn but the third umpire ruled Stokes had not quite taken a gully catch cleanly.
Together with Elgar, De Villiers (49) soaked up the pressure adding a steady 86 for the third wicket - lofting Ali for a magnificent straight six in the process - before becoming Broad's third victim as he prodded forward tentatively.
Elgar likewise endeavoured not to let the spinner settle, reaching his fourth Test fifty off 93 balls with a six over mid-on, and pushed on after Faf du Plessis advanced only to be bowled through the gate, the ball brushing the bail just hard enough to send it tumbling.
South Africa's plight might have been worse had Alastair Cook opted to review an lbw decision against Elgar who was given not out on 58, the score 117-4 at the time, but the chance went begging.
Watch highlights of day two at 6pm on Sky Sports 3, then catch The Verdict with Charles Colvile from 7pm on the same channel.