Spinners Jeffrey Vandersay and Maheesh Theekshana shared six wickets to help Sri Lanka bowl out New Zealand for 209 in the rain-hit second one-day international on Sunday.
Put in to bat, New Zealand were bowled out in 45.1 overs after the game was reduced to 47-overs a side due to rain interruptions at Pallekele.
Mark Chapman hit a sparkling 76 off 81 balls and shared 75 runs for the fifth wicket with Mitchell Hay who fell short of his maiden one-day half-century by one run.
Their batting was the lone bright spot for the Kiwis who struggled to get going against Sri Lankan spinners.
Left-arm spinner Dunith Wellalage set the tone in the second over, clean-bowling opener Tim Robinson with a sharp delivery.
But Chapman opened up to hit seven boundaries and three sixes in his defiant innings.
His spirited effort ended when Avishka Fernando took a spectacular diving catch inches off the ground.
Hay, who batted with maturity, was dismissed for 49 as the final wicket.
Sri Lanka's fielding, though not flawless, had its moments of brilliance.
While there were dropped catches and lapses in the field, Avishka Fernando stood out with three stunning catches.
Another highlight came from Pathum Nissanka, who sprinted in from long-on to claim an extraordinary catch, sending Mitchell Santner (6) back after the left-hander failed to pick Vandersay's googly.
The hosts made one change to the side that won the first ODI by 45 runs, bringing in Wellalage in place of left-arm quick Dilshan Madushanka.
New Zealand did not make any changes in their lineup.
The third and final ODI will also take place at Pallekele on Tuesday.
Earlier, a two-match T20I series between the teams ended in a 1-1 draw.