New Zealand, who won the first match by 45 runs, take an unbeatable 2-0 lead before the final game of the series next week.
A rollicking maiden century by Sri Lanka's Thisara Perera was ultimately in vain as New Zealand wrapped up the one-day series with a 21-run victory in the second ODI at Mount Maunganui.
With Sri Lanka chasing New Zealand's 319 for seven, they were on the ropes at 128 for seven when Perera opened up.
He faced 74 deliveries and cracked 13 sixes and eight fours before he was the last wicket to fall and Sri Lanka were out for 298 with 22 balls remaining.
Sri Lanka reached 112 for two when Ish Sodhi captured the wicket of Kusal Mendis for 20 to trigger a collapse which saw five wickets fall in six overs.
But Perera refused to give up as he bludgeoned the New Zealand attack with brute force.
He made 58 in a 75-run stand with Lasith Malinga for the eighth wicket, and scored 45 of the 51 runs for the ninth wicket with Lakshan Sandakan.
Dismal tour for Sri Lanka
But when a seemingly impossible victory seemed on the cards Matt Henry had Perera caught by Trent Boult at long-on.
Opener Danushka Gunathilaka played his part at the top of the order with 71 but elsewhere the Sri Lankan batsmen failed to fire.
It continued a dismal tour for Sri Lanka who also lost the Test series 1-0 and lost the first ODI by 45 runs.
When New Zealand won the toss and elected to bat, Sri Lanka had their tails up when they removed first-match centurion Martin Guptill and Kane Williamson cheaply to have New Zealand at 39 for two.
Powerful batting by Kiwis
But Ross Taylor (90) and Colin Munro (87) swung momentum New Zealand's way with a 112-run stand for the third wicket, while all-rounder James Neesham lit up the tail with a whirlwind 64.
Lasith Malinga was the pick of Sri Lankan bowlers with two for 45 while bowling for New Zealand Sodhi took three for 55.
The final match in the series is in Nelson next Tuesday and the tour closes with a Twenty 20 match in Auckland on Friday.