All-rounder Moeen Ali's thrilling knock of 67 not out from 59 balls lifted England and put them 360 runs ahead late in the day.
England ended on 224-8 after struggling at 134-6 when Moeen walked to the crease.
Earlier, South Africa’s last batsman, Duane Olivier top-edged a bouncer to become the third victim for Stuart Broad to ensure the visitors innings ended at 226.
After a day of changing fortunes, England will now be confident of wrapping up a 3-1 series win.
England 362 and 224 for 8 (Moeen 67*, Broad 0*, Olivier 3-38) lead South Africa 226 (Bavuma 46, Anderson 4-38) by 360 runs.
Matches Tagged in ClipDex2017 ENG v RSA 4th Test
Series Tagged in ClipDex2017 ENG v RSA Test serie ...
Players Tagged in ClipDexAnderson, James M Westley, Thomas Maharaj, Keshav A Moeen Ali Bairstow, Jonathan M Broad, Stuart C J Stokes, Benjamin A Morkel, Morne Malan, Dawid J Roland-Jones, Toby Root, Joseph Edward Olivier, Duanne
Grounds Tagged in ClipDexOld Trafford
Categories Tagged in ClipDexTest Matches