Capetown: Hashim Amla lifted South Africa to 252/3 at stump on the opening day of the first Test after the hosts skittled New Zealand for 45 in an extraordinary first session.
During the day's play, Steyn picked up his 300th Test wicket while Kallis crossed 13,000 runs.
The South Africans have responded wonderfully with the bat. Amla scored his 24th Test fifty while Kallis went past 13000 Test runs. Petersen hung in there and stroked his fifth Test ton to give South Africa a massive advantage
Fast bowler Vernon Philander (5-7) took five wickets as the Proteas dismissed the Black Caps in just 19.2 overs, the eighth-shortest completed innings in Test cricket, but they lost captain Graeme Smith in the last over before lunch.
Resuming on three for one, Alviro Petersen and Amla set about steadying the innings and consecutive leg-side boundaries by Petersen from the first two balls of the session eased the pressure.
The prolific Amla then became the main aggressor as he struck three boundaries off wicket-taker Doug Bracewell before taking his team past New Zealand's score in the 12th over with a fine on-drive.
Amla continued his dazzling strokeplay, racing to his half-century from just 55 deliveries with a drive through the covers off Chris Martin.
The stand ended 15 minutes before tea, though, as Amla was trapped lbw for 66 after walking across his stumps to a James Franklin delivery.
That brought Jacques Kallis to the wicket and the veteran all-rounder received a rousing reception from the home crowd needing just 20 runs to reach 13,000 runs in test cricket.
Fast bowler Philander claimed five early wickets as South Africa made New Zealand skipper Brendon McCullum pay for choosing to bat first.
Philander produced astonishing figures of five for seven as the touring side were dismissed for their third lowest total in tests.
New Zealand came into the series in disarray following the controversial sacking of Ross Taylor from the captaincy and Philander struck in the second over when he had Martin Guptill caught behind for one.
That triggered an ignominious procession for the New Zealanders with Philander removing McCullum, Dean Brownlie and Kane Williamson in his next three overs as the visitors lost their top order for 27 runs inside 10 overs.
Williamson's 13 was the highest individual score and none of his team mates managed double figures.
Paceman Morne Morkel (three for 14) soon got into the act, removing Franklin caught at first slip for one.
Dale Steyn came into the match needing just one wicket to reach the 300 mark in tests and he returned after a barren first spell to reach the milestone by removing Doug Bracewell's off-stump with a fine out-swinger.
Morkel claimed the wickets of Jeetan Patel and Trent Boult before Steyn picked up the final wicket when Daniel Flynn, who survived 28 deliveries, skied a catch back to the fast bowler.
New Zealand 45 (Philander 5-7, Morkel 3-14)
South Africa 252 for 3 (Petersen 103*, Amla 66, Kallis 60)
Status South Africa lead by 207 runs