Toby Roland-Jones ripped through South Africa's top order to claim 4-39 on a dream debut and put England in a commanding position on day two of the third Test, at The Kia Oval.
Roland-Jones removed Dean Elgar with his 10th ball and reduced the Proteas to 47-4 in reply to England's 353 all out, in which Ben Stokes (112) reached his fifth Test century with successive sixes.
James Anderson (2-16) deepened the in-roads in conditions perfect for seam bowling before South Africa - needing 154 to avoid the follow-on - closed on 126-8, 227 behind, despite a 53-run stand between Temba Bavuma (34no) and Kagiso Rabada (30).
With uncertainty surrounding whether Vernon Philander will bat after going to hospital for tests for a recurring stomach complaint, South Africa's plight is dire.
The capitulation not only shifted the balance of the series, tantalisingly poised at 1-1 after the Proteas' thumping second Test win, back in England's favour but highlighted the quality of Alastair Cook's application and focus on day one, as the former skipper accumulated 82no.
"What we've learnt from today is about how well England batted," reflected Sky Sports commentator Nasser Hussain. "They were criticised for their batting display at Trent Bridge, but Cook and Stokes showed that they aren't a one-dimensional side. The headlines will be about the bowling, but the real story is the batting."
Stokes shared the limelight with Roland-Jones after reaching his century in spectacular fashion with the second of three sixes in a row off spinner Keshav Maharaj, briefly reviving memories of his show-stealing 258 against the Proteas in January 2016.
He needed some help from Faf du Plessis on 91 - the Proteas skipper taking a catch at deep midwicket only to fall backwards and touch the boundary with his shoulder.
The second maximum was all Stokes, clearing the rope down the ground, and after striking a third six the all-rounder was last out as he holed out to long off.
England had earlier resumed on 171-4 - Cook adding only six to his overnight 82no before he fell lbw to Morne Morkel - the former skipper's review in vain as replays showed the ball trimming the bails. Morkel has now dismissed Cook 10 times in Test cricket, more than any other bowler.
Stokes, watchful at first, passed 2,000 Test runs in 62 innings and upped the ante by striking three boundaries in four balls from Chris Morris - Jonny Bairstow matching him by hitting three off an over too, taking the attack to Maharaj just before drinks.
The break didn't interrupt his flow - Stokes reaching his fifty off 72 balls - only for South Africa to hit back with the 10th delivery with the new ball when Bairstow edged Rabada to Du Plessis at second slip.
Moeen Ali struck the first boundary in 10 overs just before lunch as he attempted to leave Rabada and runs remained hard to come by after the interval - Stokes going without a four for 58 balls.
Morkel finally picked up his first wicket when Ali was adjudged caught behind off an inside edge although DRS didn't provide conclusive proof that the left-hander had hit ball rather than pad.
South Africa strived to keep Stokes off strike but found Roland-Jones in free-scoring form, the Middlesex seamer - who has a first-class century to his name - driving confidently and pulling Morris for six in an over that cost 17.
Roland-Jones fell for a run-a-ball 25 when he was trapped lbw by Maharaj and while Stuart Broad (three) snicked off cheaply, Anderson stood firm to see Stokes through to his ton.
The run flurry was the prelude to a dramatic collapse, sparked when Roland-Jones found the edge of Elgar's bat on the stroke of tea. He continued an irresistible spell on the resumption, coming close to removing Amla lbw with the first ball of the evening session.
The veteran's reprieve was short-lived - Amla (six) gloving a sharply-rising delivery behind after Heino Kuhn (15) was palpably lbw aiming to hit to leg.
Roland-Jones improved his figures to 4-20 off 5.3 overs when Quinton De Kock, trying to work to leg, could only succeed in getting a leading edge to gully.
With Du Plessis shouldering arms to Anderson, who then reacted sharply to grab a return catch offered by Morris, South Africa quickly found themselves in dire straits at 51-6.
Rabada (30) rallied the tourists, sharing a stand of 53 with Bavuma, only to lose the top of off stump to a magnificent Broad delivery after Stokes had found Maharaj's edge.
Live coverage of the third Test between England and South Africa - in association with Sky Ocean Rescue - continues on Sky Sports Cricket and across our digital platforms from 10am on Saturday.