The match was reduced to 37 overs apiece after rain delayed the start at Seddon Park.
The Black Caps posted 255 for nine. Classy opener Rachin Ravindra shone with 79 and combined in a 112-run stand with Mark Chapman, who scored a brisk 62.
The visitors lost four quick wickets in pursuit and were eventually bundled out for 142.
Spinner Maheesh Theekshana snared a hat trick for Sri Lanka and finished with four for 44 in a fine display.
No-one seemed capable of reading his carrom ball which he employed with good success against the right-handers.
But it was New Zealand’s night. They dominated the fixture.
Opener Will Young looked to play with more freedom than he might usually approach the beginning of an ODI.
He looked in a hurry rather than the calm figure he usually presents.
But he got a cracker from Asitha Fernando on 16.
The right-armer jagged a delivery back and bowled Young through the gap between bat and pad.
He had launched into a drive and was stunned to hear his off stump tumble from its mooring.
Ravindra took revenge on Asitha Fernando. He sent back-to-back deliveries to the boundary with two delightful drives.
Chapman raced to 20-odd without looking in complete control.
The two lefties kept the pressure on, taking 11 runs off a Charith Asalanka over.
The milestones started tumbling.
Ravindra brought up his first ODI 50 on home soil in style. He danced down the wicket and dispatched Wanindu Hasaranga over his head for six.
Chapman was now in control as well and swung Eshan Malinga for six to bring up his half century.
That shot brought up the 100-run partnership as well.
Sri Lanka needed a wicket and Chapman obliged. He lofted a delivery from Theekshana straight to mid-off.
Ravindra continued to find the rope with some wonderful timing.
He is billed as Kane Williamson’s heir apparent and was living up to the hype until Asalanka intercepted a shot on the way to the boundary.
It was a tremendous diving catch in the covers.
Sri Lanka snuffed out more momentum when Tom Latham was run out moments later.
They also picked up the wicket of Glenn Phillips just as he twisted the throttle.
Daryl Mitchell (38 from 38 balls) threatened to get away but was kept pinned down. Mitchell Santner clubbed 20 from 15 but the Black Caps let too many overs slide by at the death and finished shy of what they looked capable of reaching.
Theekshana claimed his hat trick late to help restrict New Zealand.
But his mates in the top order let him down.
The visitors slumped to 22 for four.
Otago seamer Jacob Duffy nabbed two quick wickets, Matt Henry accounted for Avishka Fernando and Asalanka ran himself out to leave the innings covered in vinegar.
Play and miss. Play and miss. Janith Liyanage and Kamindu Mendis did plenty of that. They also middled some.
It was boundaries or dots for a period.
The partnership eclipsed 50 before a Nathan Smith delivery brushed the gloves of Liyanage and he had to go for 22.
The load fell on Kamindu Mendis. He blazed a half century from 58 balls and kept the pressure on, lofting a Smith delivery out of the ground.
But his effort ended on 64 when Daryl Mitchell dived forward at midwicket and scooped up a great catch.