Five run-outs were the undoing of an inexperienced South African batting line-up, which saw them go down by 27 runs to New Zealand in the second one-day international played in Kimberley on Tuesday.
The hosts also conceded the three-match series 2-0, with one to play in Potchefstroom on Friday.
Set a target of 280, the Proteas appeared to be cruising and were well ahead of the run-rate with wickets in hand. At the end of 25 overs, South Africa were 135/1 compared with the Black Caps' 106/2 at the same stage.
Twenty-year-old Quinton de Kock opened the batting with Graeme Smith and, playing in only his second ODI, smacked a couple of sixes and a four before Kyle Mills got one to nip back at him and clipped his stumps, for 25.
Smith and Colin Ingram swiftly added 129 runs off 135-balls and were sailing along until Smith was run out for 66. James Franklin stopped an Ingram shot and Smith, attempting a third run, was caught short by wicketkeeper Brendon McCullum.
In the next over, Faf du Plessis (2) was out thanks to a direct hit by older brother Nathan McCullum and then it all fell apart.
Nathan McCullum was also responsible for ending David Miller's innings of 14 and then Martin Guptill ran out Rory Kleinveldt for a duck.
It was too big an ask for debutant Farhaan Behardien who became the fifth victim of the Black Caps' new-found fielding expertise, but not before he had made 31 off 40-balls.
With the smell of blood under their noses, the Black Caps went into overdrive and the Proteas lost their last five wickets for 41 runs.
Kane Williamson's 145 not-out helped New Zealand post 279 for eight after coming to the crease when his side was one wicket down without a run on the board.
He went on to achieve the highest individual score by a Kiwi against South Africa bettering Stephen Fleming's 134 not-out in Johannesburg in February 2003.
Guptill got his second duck in a row after he top-edged Kleinveldt, giving stand-in captain Du Plessis a comfortable catch at point.
After Morne Morkel took his 100th ODI wicket, trapping BJ Watling in front for 12, Williamson and Grant Elliot came together at 32 for two.
The pair added 127 runs off 130-balls before Kleinveldt struck again when Elliott was caught behind by wicketkeeper De Kock, for 48.
Williamson went on to make his third ODI century off exactly 100-balls, including 14 boundaries – passing his previous best of 108 against Bangladesh.
His partnership with captain Brendon McCullum was short and sweet – 29 off 18 balls – after McCullum once again showed poor judgement. After smashing a four and six off consecutive balls, he ran down the track to Morkel and missed and then tried the same thing off the next ball and was castled.
Lonwabo Tsotsobe chipped in with two wickets in one over. The slower ball fooled ODI debutant Colin Munro, who skied one to Ingram, running in from the deep to take an excellent catch. Two balls later, the reverse swing saw James Franklin bowled through the gate.
Morkel ended with three for 71 but Tsotsobe, who was also responsible for a run-out and took a catch, bagged two for 38 and was matched by Kleinveldt's 2-45 in the bowling stakes.