Opener Dean Elgar provided stubborn resistance as South Africa finished the second day of the first Test on 137 for four in reply to England's 303 at Kingsmead on Sunday.
The touring side were in the ascendancy, however, following a fine all-round display from Stuart Broad, who made a brisk 32 before claiming three key wickets.
Elgar was unbeaten on 67 at the close after Broad removed three of his partners, including a superb delivery to dismiss the dangerous AB de Villiers caught behind.
Temba Bavuma is batting on 10 with South Africa 166 runs adrift going into the third day.
Broad also snagged the wicket of Stiaan van Zyl with the second ball of the innings and had out-of-form South Africa captain Hashim Amla caught behind for seven.
Spinner Moeen Ali bowled Faf du Plessis for two, the batsman dancing down the track but missing the ball which clipped the top of the bails.
The second day in Durban Tests are traditionally the preserve of batsmen, but eight wickets fell in the first two sessions. England could not have asked for a better start when Van Zyl, back in the side after being dropped, shouldered arms to a straight ball from Broad that took off the top of the bails.
Amla fell with the score on 14, squared up by Broad and caught by wicketkeeper Jonny Bairstow.
England nearly claimed the prize wicket of De Villiers before Tea when he edged a delivery from Finn to gully, but television replays could not prove that the ball carried to Ben Stokes.
Broad, who finished the day with figures of 3-16 off 10 overs, had also been the central figure before Lunch with an unbeaten 32 in a defiant last-wicket stand with Steven Finn.
Morne Morkel took four wickets as England added 124 runs to their overnight tally for the loss of six wickets.
Nick Compton, 63 overnight, was one of Morkel's victims, after he top-scored with 85.
Morkel also dismissed Stokes, Moeen and Chris Woakes, out first ball, in a hostile spell as the sun came out after a rain-affected first day.
Dale Steyn took the last wicket to finish with the best figures of 4-70, while Bairstow enjoyed a brief cameo at number seven, striking 41 off 56 balls, before getting a thick edge off Kyle Abbott that was caught at slip by Elgar.