Morkel finished with four for 76 and fellow fast bowler Dale Steyn took four for 70. England lost six wickets in adding 124 runs to their overnight total of 179 for four.
Morkel made an early breakthrough to end an aggressive innings of 21 by overnight batsman Ben Stokes, who top-edged an attempted pull to be caught by JP Duminy, running back from third slip.
Nick Compton and Jonny Bairstow put on 51 for the sixth wicket before Morkel produced a burst of three wickets for no runs in six balls.
In his next over, Morkel dismissed Moeen Ali and Chris Woakes with successive deliveries, both out for nought. Ali was caught behind and Woakes leg before wicket.
Kyle Abbott had Bairstow caught by a diving Dean Elgar at second slip for 41 off 56 balls.
Stuart Broad and Steven Finn frustrated the bowlers with a last wicket stand of 36. With nine wickets down, an extended morning's play was stretched by almost half an hour before Steyn came back and trapped Finn leg before wicket.
