The innings largely belonged to 22-year-old Kane Williamson, who struck an unbeaten 145 as wickets fell at regular intervals around him.
The tourists eventually ended their 50 permitted overs on 279-8.
In reply, South Africa will have to make do without two of their key batsmen. AB de Villiers is suspended because of a slow over rate in the previous match, while Hashim Amla is suffering from a muscular complaint.
The Kiwis currently lead the three-match series 1-0.