But Steyn's two for 18, in which he reached the landmark 300 by bowling Doug Bracewell for two, was overshadowed by a devastating spell from Vernon Philander, who ended the first innings with figures of five for seven.
Philander's achievement was all the more remarkable as he had been an injury doubt going into the match.
VIDEO: South Africa v New Zealand: 1st Test, day 1, latest highlights
Morne Morkel picked up the three remaining New Zealand wickets for 14, as only Kane Williamson managed to reach double figures (13) during their capitulation in just 19.2 overs.
Steyn's achievement in his 61st Test means that only Australia's Dennis Lillee and Muttiah Muralitharan of Sri Lanka have reached the milestone in fewer matches. Lillee managed it in 56 Tests and Muralitharan in 58.
West Indian quick Malcolm Marshall and Richard Hadlee of New Zealand both also reached 300 wickets in 61 matches.
"It's an unbelievable achievement," said South African captain Graeme Smith.
"He's our go-to guy. He's got there really quickly. He always seems to make an impact for us. He's the type of guy as a captain he's an asset to have. You can throw him the ball and you know he'll make a play for you somewhere during the Test match.
"When he gets that bit between his teeth you really start to see things happening."
New Zealand won the toss and decided to bat on a pitch which appeared to have a good covering of grass, which proved to help the bowlers in the early stages of the match.
South Africa fielded the team that won the third and final Test against Australia in Perth last month, when they confirmed their ranking as the number one team in the world.
Eighth-ranked
New Zealand were led for the first time in a Test match by Brendon
McCullum. The Kiwis have been hit by injuries and the withdrawal of
former captain and star batsman Ross Taylor.
South Africa: Graeme Smith (captain), Alviro Petersen, Hashim Amla, Jacques Kallis, AB de Villiers (wk), Faf du Plessis, Dean Elgar, Robin Peterson, Vernon Philander, Dale Steyn, Morne Morkel.
New Zealand: Martin Guptill, Brendon McCullum (captain), Kane Williamson, Dean Brownlie, Daniel Flynn, BJ Watling (wk), James Franklin, Doug Bracewell, Jeetan Patel, Trent Boult, Chris Martin.