Morne Morkel ran through England's heavily-stocked middle-order as the tourists collapsed to 303 all out on the second morning of the Boxing Day Test in Durban.
England battled hard on the opening day to reach 179 for four but lost their last six wickets for 124 to surrender the initiative at Kingsmead.
Morkel claimed three wickets in six deliveries, and four in total, but a sub-300 total was averted by a 36-run last-wicket stand between Stuart Broad and Steven Finn.
Nick Compton, born and raised in the city, came within sight of an emotional century but when he went for 85 so did England's composure.
Despite being the senior man at the crease overnight, with 63 runs to Ben Stokes' five, Compton was happy to take a back seat early on.
Stokes burned brightly but all too briefly, racing to 21 before being reined in by Morkel.
He attempted to get back on top by going after a short one, but he mis-hit a simple catch to JP Duminy.
Compton, by contrast, gritted his teeth and eked out seven runs from the first hour's play.
The arrival of the new ball threatened to be the key moment and, initially at least, England responded well.
Compton greeted its arrival by steering Dale Steyn backward of point for his first boundary in 23 overs and new man Jonny Bairstow helped himself to two fours as Kyle Abbott drifted onto his pads.
Compton, having batted so methodically, seemed happy that the ball was finally coming on to his bat and raised a rare full-beam smile after pumping Steyn through the covers.
But like Stokes, he failed to time a pull off Morkel, and walked after feathering a catch to AB De Villiers.
Having arrived at the crease with three runs on the board and left with 247 scored, he can consider his knock a job well done.
It was, though, a platform that was summarily squandered.
Morkel, after a quiet first day, knocked off all-rounders Moeen Ali and Chris Woakes with successive balls.
Moeen was done by a beauty that nipped off the pitch and took the edge, with Woakes lbw for a golden duck and possibly beaten for pace.
Broad, owner of two Test hat-tricks and the final victim in Peter Siddle's five years ago, came into a familiar situation and did his best to nick a fine delivery.
Morkel's luck was out on this occasion and instead it was Abbott who struck next, Bairstow well held by Dean Elgar after a bright 41.
A swift end seemed likely but Broad and last man Finn proved awkward customers.
Broad threw the bat with freedom, reaching 32 not out including five boundaries before Finn became Steyn's fourth victim of the innings.