England have chipped away at South Africa to restrict the hosts to 267-7 on day one of the third Test in Johannesburg.
The Proteas' opening batsmen Dean Elgar and Stiaan van Zyl started steady at the crease as the tourists toiled, but the breakthrough came inside the 18th over.
Ben Stokes was the man to take it as only his third delivery of the day forced Van Zyl (21) to loop the ball into the air, resulting in an easy catch for Jonny Bairstow.
Elgar and Hashim Amla managed to recover for South Africa as they reached lunch unscathed on 28 and 32 runs respectively, with a total of 73 runs on the board.
In the afternoon session, England lost one of their reviews when Stokes's lbw shout on Amla was denied, and the hosts looked comfortable as they surpassed the 100-run mark.
However, it did not last as the momentum began to turn when the Proteas lost two wickets for 10 runs - the first blow came when Moeen Ali dismissed Elgar for 46 and Stuart Finn claimed the wicket of Amla (40).
Bairstow returned to the pavilion for tea having caught all three wickets as South Africa looked less assured ending the afternoon session on 152-3.
In the final session of the day, England continued to dominate by taking a huge wicket in AB de Villiers, who managed 36 runs off 40 balls, and Stokes and Bairstow were involved again.
De Villiers tried to hook the ball away off Stokes's delivery, but it ended up clipping his glove before falling into the hands of Bairstow, who is only the second English wicketkeeper to dismiss the top four batsmen in a Test.
After De Villiers's exit, the wickets began to tumble as Faf du Plessis (16), Temba Bavuma (23) - run out by Chris Woakes and Bairstow - and Dane Vilas (26) were all sent back to the pavilion.
Chris Morris and Kagiso Rabada managed to reach stumps unbeaten on 26 and 20 runs respectively, while Stokes and Finn took two wickets apiece, with Ali and Stuart Broad contributing with one each.