South Africa rallied to reach 309-6 on day one of the second Test, at Trent Bridge, after Stuart Broad's double threatened to derail a gutsy display.
Broad, back at the ground where he took 8-15 in the 2015 Ashes, dismissed Hashim Amla (78) and Quinton de Kock (68) in a post-tea spell that yielded 2-8 on his way to figures of 3-47.
South Africa, 1-0 down in the series after last week's 211-run defeat, lost 4-56 in the final session to slip to 235-6 before Vernon Philander (54no) and recalled Chris Morris (23no) steadied the innings.
Highlights of the opening day of the second Test between England and South Africa at Trent Bridge
Returning South Africa captain Faf du Plessis' took the bold decision to bat first on a swing-friendly morning and looked justified in doing so as the tourists fought their way to 179-2.
James Anderson claimed his 300th Test wicket in England during a rain-shortened morning session when Liam Dawson leapt to his right to catch Dean Elgar (six) on the drive.
With runs at a premium against England's accurate attack, Amla became only the fourth South African to score 8,000 Test runs - joining Jacques Kallis, Graeme Smith and AB de Villiers - when he reached eight.
South Africa opener Heino Kuhn drives through the off-side
At the other end of the spectrum Heino Kuhn, in only his second Test, recovered from a crunching blow on the back of the helmet from Mark Wood to reach 34 before Broad's tactic of bowling predominantly in-swingers paid off as the opener dragged on.
His downfall brought in De Kock, batting at four for the first time in his career, and the wicketkeeper repaid the faith with some stirring strokeplay in 59-ball fifty in a third-wicket stand of 113 with Amla.
Even allowing for a life given to Amla on 56 by Alastair Cook's dropped catch at slip, South Africa's batting looked far less fragile that at Lord's.
The impression wavered after tea, however, when De Kock went after Broad's first delivery after the resumption of play and edged to slip and Amla gave into his temptation to pull once too often and picked out Wood at fine leg.
Broad celebrates taking the wicket of South Africa's Hashim Amla
Ben Stokes followed up with a double of his own, claiming Du Plessis' wicket with a superb, one-handed catch down the leg-side by Jonny Bairstow - the skipper reviewing in vain due to a slight touch on his glove.
Bairstow's second catch was rather more routine, the enterprising Temba Bavuma cut short on 20 when he nicked through attempting to leave a ball outside off-stump.
Philander struck nine fours in a conservative half-century, his seventh in Test cricket, taking minimal risks as he and Morris reined in their attacking instincts and made sure the hard yards of the top-order were not wasted.
England strived for one more breakthrough but with the pitch slowing in the sunshine, the pair saw out the day - the final delivery from Stokes taking Morris' edge but falling short of Joe Root at slip.
Live coverage of the first Test between England and South Africa continues on Sky Sports 2 and in Ultra HD on Sky Q from 10am on Saturday. Watch in-play clips and follow over-by-over commentary on our live blog, available on skysports.com and Sky Sports apps.