Kusal Perera made New Zealand pay for twice dropping him with a half-century that helped Sri Lanka to a series-clinching win at Pallekele in the second Twenty20 international.
Man-of-the-match Perera hit a career-best 57 from 37 balls and combined in a 96-run stand with Tillakaratne Dilshan, whose unbeaten 59 saw the hosts comfortably chase down 142 for seven with eight wickets and 13 balls to spare.
After the first game was washed out on Tuesday, victory was enough to ensure Sri Lanka won the two-match series.
New Zealand were left to rue the missed chances offered by Perera after Mitchell McClenaghan trapped Mahela Jayawardene lbw in the second over.
McClenaghan could have asserted further early pressure on the home chase four balls later, only for a sharp chance off Perera to go down at short fine-leg.
Perera was dropped again on 39, Colin Munro spilling a high ball in the deep, and had done the majority of the required work by the time he reached his half-century, from 31 deliveries, after clubbing seven fours and two sixes.
Rob Nicol finally made the breakthrough, holding on to a leading edge, but Dilshan combined with Kumar Sangakkara to steer Sri Lanka over the line.
Some late hitting courtesy of an unbeaten 34 from Luke Ronchi and 26 by Nathan McCullum helped New Zealand up to a competitive total.
Opener Anton Devcich scored a restorative 30 after Hamish Rutherford and Neil Broom's exits made the score 14 for two, but a further slump to 93 for five in the 14th over left it to Ronchi and McCullum’s 45-run stand from 29 balls to salvage matters.