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