Dale Steyn picked up three wickets each while Vernon Philander and Jacques Kallis took a brace each as South Africa bundled out New Zealand for 275 to win the first Test match at Newlands by an innings and 27 runs.
New Zealand middle-order batsman Dean Brownlie scored his maiden century against South Africa to keep the hopes alive of the visitors.
At lunch, New Zealand were 262 for the loss of five wickets, trailing by 73 runs.
But in the second session, Steyn, who had picked up the solitary wicket of Martin Guptill till then, dug into the Kiwi lower order to bowl his team to a massive win.
Earlier, the 28-year-old Brownlie scored 106 runs, smashing 11 fours and one six. Earlier, skipper Brendon McCullum scored half-century before getting dismissed.
New Zealand put up a fighting batting performance on the second day to reach 169 for four in their second innings, against South Africa in the first Test at Cape Town.
McCullum made 51 and Brownlie was undefeated on 69.
They were still likely to lose the match but it was a much better showing by the tourists after a calamitous first day during which they were bowled out for 45 and then leaked runs at almost four an over.
New Zealand’s bowlers and fielders gave an improved performance, restricting South Africa to 97 runs and claiming five wickets in 31.2 overs before the home side declared at 347 for eight, a lead of 302.
Brief Scores: New Zealand 45 and 275 (Dean Brownlie 109, Brendon McCullum 51; Jacques Kallis 3 for 67; Jacques Kallis 2 for 31) lost to South Africa 347 for 8 dec. (Alviro Petersen 106, AB de Villiers 67, Hashim Amla 66; Chris Martin 3 for 63) by an innings and 27 runs