The home team were 29 for no wicket in reply at the close after a day interrupted by rain and bad light.
England, after winning the toss and choosing to bat, were rocked by three wickets from Morkel in his first five overs as they crashed to 39 for four.
Paul Collingwood and Ian Bell lifted the visitors to 100 for four at lunch but there was more misery in the second session as Steyn sparked a collapse of six for 80 to finish the innings with five for 51.
Collingwood and Bell shared a stand of 76 before debutant Ryan McLaren had the former caught at point off a leading edge for 47.
Bell was then bowled for 35 by a good ball from Steyn that came back through the gate.
England lead the series 1-0.