By
Graeme Swann was 14 not out and James Anderson nine not out after Jonathan Bairstow fell short of a maiden Test century, bowled by Morne Morkel for 95.
South Africa lead the three-match series 1-0 and only need to avoid defeat at Lord's to replace England as the world's top-ranked Test side.