Kane Williamson (97) and Ross Taylor (96) hit two sixes apiece during a stand of 117 in 123 balls as the Kiwis posted 315-8 having opted to bat first.
Kumar Sangakkara (81) made his 93rd one-day international fifty but fell in the 38th over, the eighth wicket to go.
Sri Lanka were all out soon after for 195. The final game is on Thursday.
It was an emphatic victory for the Kiwis, who meet the Sri Lankans in the opening match of the World Cup on 14 February.
Williamson was badly dropped on 27 by Tillakarate Dilshan at short cover and reached fifty from 60 balls, but he was denied a sixth ODI century when he was run out after finding himself at the same end as Taylor when in pursuit of a second run.
Corey Anderson added 40 in 28 balls and hit three fours in an over from seamer Thisara Perera that cost 19.
Taylor struck sixes in consecutive overs before he was trapped lbw on the toe in the 47th over, but his team compiled the second highest total at the University Oval, to follow the record they set in the previous match.
The Sri Lankans made a solid start, reaching 55-0 after 12 overs before Dilshan and opening partner Lahiru Thirimanne departed in successive overs.
Sangakkara reached fifty from 39 balls, but having struck successive boundaries off left-arm seamer Trent Boult he got a leading edge and spooned a catch to mid-on, as New Zealand took control.
New Zealand claimed the one-day series with Sri Lanka, taking an unassailable 4-1 lead with a 120-run win in the penultimate match in Dunedin.