South Africa were 55 for two at tea after bowling out England for 303.
Broad bowled Stiaan van Zyl and had Hashim Amla caught behind to reduce South Africa to 14 for two, negating any advantage the hosts might have had after taking six English wickets in an extended morning's play.
Van Zyl did not offer a shot to the second ball of the innings and saw the ball cut back to hit his off stump.
South Africa would have been in worse trouble if AB de Villiers, on 11, had not survived an umpires' review after edging Steven Finn low to Ben Stokes at gully.
Also Read
Stokes was not certain whether the ball had carried, an opinion shared by television umpire Bruce Oxenford after viewing several replays.
De Villiers was on 26 not out at tea, adding 41 runs in an unbeaten third wicket stand with Dean Elgar (22 not out).
Morkel made an early breakthrough to end an aggressive innings of 21 by overnight batsman Stokes, who top-edged an attempted pull to be caught by JP Duminy, running back from third slip.
Nick Compton and Bairstow put on 51 for the sixth wicket before Morkel produced a burst of three wickets for no runs in six balls.
Morkel ended a long vigil by Compton, who got a faint edge to an attempted pull to be caught behind for 85. Compton batted for 378 minutes and faced 236 balls in an innings which contained eight fours.
Kyle Abbott had Bairstow caught by a diving Dean Elgar at second slip for 41 off 56 balls.
Broad and Finn frustrated the bowlers with a last wicket stand of 36. An extended morning's play was stretched by almost another half an hour before Steyn trapped Finn leg before wicket.