Ben Stokes top-scored with 58 before falling to Kagiso Rabada in the penultimate over, leaving England 260-6 on day one of the fourth Test.
Click on the video above to see highlights of an enthralling day's play on which South Africa's seamers, led by Rabada (2-52) and Morne Morkel (1-57), fought hard in helpful conditions.
Wicketkeeper Quinton de Kock claimed his 100th dismissal when Tom Westley edged behind and was relieved to see Joe Root fall for 52 after missing a chance to catch England's skipper eight runs earlier.
Root had earlier named an unchanged side after winning the toss on a day when Lancashire renamed the pavilion end the James Anderson End, in honour of England's leading wicket-taker.
South Africa made two changes - Duanne Oliver (2-72) and Theunis de Bruyn coming in for Chris Morris and Vernon Philander, both ruled out due to back spasms.
Alastair Cook (46) helped establish a platform after Keaton Jennings (17) had again fallen cheaply, Tom Westley (29) and Dawid Malan (18) both failed to kick on after patiently making starts.
Jonny Bairstow was unbeaten on 33 at stumps with nightwatchman Toby Roland-Jones yet to face a ball after Stokes was yorked late on.
Watch the fourth and final Test between England and South Africa live on Sky Sports Cricket and Main Event - with over-by-over commentary and in-play video clips on our digital platforms - from 10am on Saturday.