Johny Bairstow was last man out for 99 after scoring 66 of the 102 runs England added on the second day that saw them post 362.
Bairstow and Jimmy Anderson put on 50 for the last wicket before the keeper-batsman agonisingly fell short of his century.
Starting at the Old Trafford end named after him, James Anderson removed Dean Elgar lbw for a duck in the first over of South Africa's reply. Anderson finished with 4-33 to leave South Africa with a mountain to climb at 220-9.
South Africa 220 for 9 (Bavuma 46, Anderson 4-33) trail England 362 (Bairstow 99, Stokes 58, Root 52) by 142 runs.
Matches Tagged in ClipDex2017 ENG v RSA 4th Test
Series Tagged in ClipDex2017 ENG v RSA Test serie ...
Players Tagged in ClipDexBavuma, Temba Kuhn, Heino G Broad, Stuart C J De Bruyn, Theunis B Bairstow, Jonathan M Moeen Ali Anderson, James M Rabada, Kagiso Roland-Jones, Toby
Grounds Tagged in ClipDexOld Trafford
Categories Tagged in ClipDexTest Matches