South African captain Graeme Smith smashed 61 off 43 balls as the home side raced to 84 without losing a wicket after they were sent in on Friday.
But South Africa collapsed dramatically to be bowled out for 133 in 19.3 overs, with slow-medium bowler Nathan Astle and off-spinner Jeetan Patel taking three wickets each.
Smith took full advantage of the opening seven overs of fielding restrictions as he thrashed the faster bowlers for ten fours and a six. He and opening partner Jacques Kallis seemed to have laid the foundation for a massive total.
The introduction of Astle and Patel brought New Zealand back into the contest. All ten wickets fell for 49 runs in ten overs.
Smith's spectacular innings was ended when he hit a return catch to Astle off the fourth ball of the tenth over.
Smith stood his ground and the decision was referred to television umpire Karl Hurter after neither on-field umpire was sure whether he had hit the ball back on the full.
Kallis followed in the next over when he played around a ball from Patel. He made 20 off 18 balls, with Smith having taken most of the strike during their stand.
The innings rapidly disintegrated as the batsmen went for their shots over-ambitiously.
Astle and Patel finished with identical figures of three for 20 from their four overs apiece. Fast bowler Shane Bond, who conceded 19 runs off his first two overs, came back to bowl two tailenders and finished with two for 25.
New Zealand also got off to a good start, with captain Stephen Fleming and Astle putting on 37 in five overs before Astle was bowled by the first ball sent down by first-change fast bowler Andre Nel.
A second wicket fell five balls later when Hamish Marshall was caught behind off Nel.
Swing bowler Charl Langeveldt claimed the key wicket of Fleming in the next over when the New Zealand captain slashed a catch to Albie Morkel at gully.
Craig McMillan and Scott Styris steadied the innings with a stand of 34 and the match was effectively settled when tall left-hander Jacob Oram hit sixes in successive overs off Nicky Boje and Albie Morkel. Oram finished with 23 not out.
The match is a one-off prelude to a five-match 50-overs international series which starts in Bloemfontein Sunday.
South Africa included all five of their players who represented the World XI in matches against Australia recently but New Zealand rested left-arm spinner Daniel Vettori, their only representative in the global team.