Opener Tillekaratne Dilshan struck his 19th ODI ton to anchor Sri Lanka's 252 for four for a six-wicket win.
There were useful hands from Kumar Sangakkara, Mahela Jayawardene while captain Angelo Mathews pulled the winning runs to the fence to be on 39 when the win was achieved with 14 balls to spare.
Dilshan drove splendidly, and cut and pulled with relish in his 116 off 127 balls, to dominate the innings.
All the Sri Lankan batsmen kept the runs coming at a decent clip so there was never an issue of having to worry about run rates.
Matt Henry, not picked for the World Cup, was the pick of the New Zealand bowlers, taking two for 34 off 9.4 overs.
New Zealand's innings was a mix, in which the bad far outweighed the good.
Captain Brendon McCullum slapping an entertaining 117, his fifth ODI century, but the innings was marred later by four run outs, including three in 10 balls.
The effect was New Zealand completely butchered the chance for a sizeable score in good batting conditions on a warm afternoon.
McCullum got the measure of Sri Lanka's attack from the start, striking five sixes and 12 fours in his innings.
The boundaries at Seddon Park aren't long enough when McCullum is in his current rich form.
He faced 99 balls but with Ross Taylor out of sorts, 34 off 69 balls, it fell to the middle order to press on. They didn't.
Four wickets fell for 14 in 29 balls. The five-over power play produced three for 15 as New Zealand folded.
Dan Vettori, Luke Ronchi - without facing a ball - Corey Anderson and Nathan McCullum all fell to run outs, with muddled running and complete lack of communication letting them down.
There were two wickets apiece for spinners Rangana Herath and Sachithra Senanayake while Dilshan and Jeevan Mendis did their part in putting a cramp on New Zealand.
The third ODI is at Eden Park on Saturday.