Ben Stokes counter-attacked at the start of the day to help England forward.
The stand came to an end when Nick Compton fell to Morne Morkel for 85.
Morne Morkel dismissed Moeen Ali and Chris Woakes in quick succession while Jonny Bairstow fell to Kyle Abbott.
Morne Morkel ended Ben Stokes's stay, dismissing him for 21.
Nick Compton and Jonny Bairstow were involved in a good partnership.
Moeen Ali sent Faf du Plessis back to the pavilion for just two runs.
After bowling out England for 303, South African batsmen started poorly as Stuart Broad dismissed Stiaan van Zyl in the first over.
On a topsy-turvy Day 2, Dean Elgar led South Africa's fight with an unbeaten score of 67.
AB de Villiers provided a bit of resistance but Staurt Broad struck at a crucial period to dismiss him for 49.
Despite getting a couple of reprieves, Hashim Amla's poor form resumed as he was dismissed for 7.
Stuart Broad was England's hero for the day, helping his side gain upper hand in the Test with three vital wickets. South Africa finished on 137-4, trailing the visitors by 166 runs.