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 ClipDexBroad, Stuart C J Morkel, Morne Maharaj, Keshav A Stokes, Benjamin A Root, Joseph Edward Olivier, Duanne Westley, Thomas Roland-Jones, Toby Bairstow, Jonathan M Malan, Dawid J Moeen Ali Anderson, James M
Grounds Tagged in ClipDexOld Trafford
Categories Tagged in ClipDexTest Matches