Kusal Mendis overcame injury to score a workmanlike half-century that helped his side to clinch the series win.
Chasing 210 to win, Sri Lanka struggled for partnerships on a turning pitch and were in trouble at 93-5 but Kusal managed a groin issue sustained early in his innings to make an unbeaten 74 off 102 balls that took his side home.
Late cameos by Janith Liyanage (22), Dunith Wellalage (18) and Maheesh Theekshana (27 not out) also eased the nerves of the hosts who were rocked by the spin of Michael Bracewell (4-36).
It was Sri Lanka’s first ODI series victory over New Zealand since 2012 and their fifth bilateral series win of 2024.
Earlier, Sri Lanka opted to bowl first and were in control with two early wickets but opener Will Young (26) steadied the ship before the match was reduced to 47 overs per side due to two spells of rain.
Mark Chapman (76) and Mitchell Hay (49) then helped New Zealand lay a solid platform but the end of their 75-run stand triggered a collapse and the tourists were bowled out for a modest 209 thanks to some sharp catching by Sri Lanka.
Spinners Theekshana (3-31) and Jeffrey Vandersay (3-46) tightened things up and bamboozled the tourists as the last six wickets fell for only 36 runs.
Asitha Fernando (2-37) took the important wicket of Chapman, who smashed seven fours and three sixes and looked on course for his third ODI century until Avishka Fernando lunged forward in the deep to pull off a blinder.
Sri Lanka won the rain-hit series opener in Dambulla by 45 runs via the DLS method after Kusal and Avishka made centuries. The final game takes place in Pallekele on Tuesday.