Spinner Moeen Ali took three wickets for England on the third day of the opening test at Kingsmead as South Africa were bowled out for 214 just before lunch despite dogged resistance from opener Dean Elgar. South Africa trail England by 89 runs after losing six wickets in the opening session on Monday with Ali returning figures of four for 69 off 25 overs.
Elgar, who was 67 not out overnight, punched the air and pounded his chest in exuberant celebration after reaching 100, the first South African to do so in their last seven test matches.
His patient strokeplay contrasted with the nervy batting of many of his team mates as a crisis of confidence in the South African side, still ranked number one in the world despite a heavy series defeat in India last month, continued.
Stuart Broad, who claimed three wickets on Sunday and finished with 4-25, made an immediate impact with only the second ball of the day as play started 30 minutes early again to make up for the slow over rate from the first two days.
Temba Bavuma played on to a wider delivery and was bowled for 10.
But it was Moeen who took up most of the bowling duties with the older ball on a slow pitch and accounted for the wickets of JP Duminy, Kyle Abbott and Dale Steyn.
Ben Stokes took a sharp catch as Duminy (two) continued his struggles against spin, nicking the ball to slip.
Abbott was out without scoring after getting a thick edge onto his pad and being caught by a diving James Taylor but it needed a review before he was given out.
Steyn played patiently at first but then could not resist attacking Moeen and holed out to mid-on with a lofty shot that Chris Woakes had to juggle before holding the catch.
The new ball brought almost immediate rewards as Steven Finn grabbed the last two wickets with both Dane Piedt (1) and last man Morne Morkel (0) caught behind.