Keshav Maharaj took a career best six wickets as New Zealand crumbled to be all out for 171 in their second innings on day three of the second Test in Wellington on Saturday.
It left South Africa with a comfortable 81-run target to win the Test and go one up in the three-match series.
Opener Jeet Raval, with his Test best 80, offered some resistance with middle-order support from BJ Watling who made 29.
But around them wickets fell regularly as much through dubious shot selection as through quality bowling.
New Zealand said before the Test they did not particularly want a green wicket given the high quality of the South African pace attack.
But it was the South African spinners who did serious damage, claiming six wickets in each innings.
Left-arm spinner Maharaj, who took eight in the match, finished with six for 40 in New Zealand's second innings, his best figures and second five wicket haul in his fledgling six-Test career.
Morne Morkel started New Zealand's second innings collapse when he cleaned out the top order, including the valuable wicket of Kane Williamson for one, to finish with three for 50.
After South Africa resumed the day at 349 for nine, Morkel and Vernon Philander added a further 10 runs to stretch South Africa's first innings to a 91.
Morkel followed up by rapidly removing Tom Latham, Williamson and Neil Broom to have New Zealand at three for 64, still 27 behind and with only seven wickets left.
After Williamson fell cheaply, New Zealand needed the remaining batsmen to step up but instead Neil Broom, Henry Nicholls and Jimmy Neesham could only add 31 in total before BJ Watling joined Raval to halt the flow of wickets.
Debutant Broom, after a duck in his first inning, did not add to his lunchtime 20 when he edged Morkel to wicketkeeper Quinton de Koch at the start of the middle session in which New Zealand lost three wickets.
Maharaj had Nicholls playing on for seven and in the same over Neesham was smartly caught one-handed by a leaping Faf du Plessis for four and New Zealand were 90 for five.
Raval took two off Morkel at the start of the next over to put New Zealand in credit but once he reached his fourth half century cracks started to appear.
On 53 he was dropped by JP Duminy in the gully and on 67 he charged down the wicket to Duminy and missed the ball, but so too did de Kock when a stumping was on the cards.
De Kock made amends the next time Raval danced down the wicket and completed the stumping for Maharaj's third wicket and the opener was gone for 80.
It signalled the end for New Zealand with the last five wickets falling for 16 runs.