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