Henry Davids led the way with 68 from 51 balls at the top of the Proteas' innings, with Justin Ontong's 48 also helping as the hosts compiled 179 for six having opted to bat first.
That proved more than enough as the Black Caps managed a disappointing 146 for nine in response, Ryan McLaren and Aaron Phangisio each taking three wickets.
Faf du Plessis won the toss and chose to set a total but was first man out when Ronnie Hira bowled him for a single.
Quinton de Kock followed for two as Mitchell McLenaghan struck for New Zealand but that brought together Davids and Ontong for a productive third-wicket stand of 89 in 10.1 overs. The latter eventually fell to James Franklin having made 48 from 30 deliveries - three of which went for six.
Davids' knock contained seven fours and two sixes before McLenaghan found a way through but there were helpful cameos from David Miller (28) and Farhaan Berhardien (22) before both fell to Doug Bracewell.
New Zealand's response started poorly, Rob Nicol removed by McLaren with the total on just six.
Martin Guptill and skipper Brendon McCullum added 47 for the second wicket but that was as good as it got, with regular wickets tumbling once Phangisio accounted for both men.
Six batsmen reached double figures in the middle and late order but Nathan McCullum's 17 was the best score as nobody managed to take the chase on confidently.
New Zealand now face one three-day warm-up before the Test series begins on January 2.