Two more wickets fell in the next three overs as New Zealand, set to make 400 to win, limped to 18 for four at lunch.
Steyn bowled Tom Latham with the first ball of the final innings, then had Latham's fellow opener, Martin Guptill, caught at first slip, also for a first ball duck.
The magnitude of New Zealand's task was shown in the second over when captain and first innings top-scorer Kane Williamson was struck a painful blow on the left hand by a ball from Vernon Philander which reared up off a good length. He required lengthy treatment before resuming his innings.
In between, Ross Taylor was trapped leg before wicket by an unplayable ball from Steyn, which skidded through barely above ankle height off a pitch with increasingly unpredictable bounce.
Latham tried to leave the ball from Steyn that bowled him but it lifted sharply and bounced off his raised bat onto the stumps.
Guptill, a heavy scorer in limited overs international cricket, again raised doubts about his technique in Test cricket when he edged a ball that seamed away from him.
South Africa added 27 runs in 13 overs, for the loss of Philander's wicket before declaring their second innings on 132 for seven. Temba Bavuma made 40 not out. Tim Southee bowled Philander and finished with three for 46.
Disclaimer: No Business Standard Journalist was involved in creation of this content
