Fast bowler Morne Morkel ripped through England’s middle-order with three wickets in six balls, and there was a wicket apiece for pacemen Wayne Parnell and Dale Steyn.
Off-spinner JP Duminy delivered the finals blows, taking the last two wickets.
England began the day on 48 for three, still trailing by 195 runs, but the fire and intensity of Morkel and Steyn’s bowling meant there was no respite for their batsmen.
It was left-arm paceman Parnell, playing in his first test, who made the initial breakthrough as Kevin Pietersen, who scored just three runs on Sunday to go to 12, chased after a delivery angled across him and edged a catch to wicketkeeper Mark Boucher.
Morkel was then able to make serious inroads in his second spell of the day, Ian Bell (5), Matt Prior (0) and Stuart Broad (1) all being caught behind the wicket off deliveries that reared up nastily off the pitch.
Graeme Swann swung lustily in scoring 20 before an excellent away-swinger from Steyn had him caught at third slip.
Paul Collingwood was the one England batsman to prosper, making a defiant, counter-attacking 71 before he pulled a long-hop from off-spinner Duminy straight to deep backward square-leg.
Duminy then completed the victory when he bowled Ryan Sidebottom for 15.
Morkel ended with figures of four for 59 in 16 overs, and was seven for 98 in the match.