Having won the toss and chosen to bowl before a packed holiday crowd, Sri Lanka held New Zealand to 294 for five, with a mix of smart bowling and fielding commitment. It was the highest total in four ODIs at the ground.
Sri Lanka could justify hopes of success given how easily they hauled in New Zealand's 276 on a similarly testing pitch at Nelson last week.
New Zealand's loss of Tom Latham, caught behind in the first over, was rectified by a 122-run partnership between Martin Guptill and captain Kane Williamson.
Guptill ended 2015 as the highest ODI runmaker with 1489 runs, and carried on where he left off, making his 10th 50-over century, 102 off 109 balls.
Williamson made 61 before gloving a catch down the legside from spinner Tillakaratne Dilshan.
Sri Lanka's bowlers kept pressure on the run rate, trimming New Zealand's hitting options.
In a 55-ball period between the ninth and 18th overs, the hosts managed a solitary four; later there was one six and one four over 56 balls from the 24th to 34th overs.
Guptill and Ross Taylor put on 81 before Guptill, and shortly after, Nicholls gave catching practice in the deep off Nuwan Kulasekara.
Taylor went to his half century, whipping a six to mid-wicket, but had frustrations with timing. At 61, he was caught at deep square leg, lured into belting a Kulasekara slower ball.
Ronchi, who hit 99 and 76 in New Zealand's other ODIs at Bay Oval, delivered 37 off 31 balls, alongside Santner's 21 off 11. The pair's unbeaten 32 in 21 balls proved crucial for the sixth wicket.
The New Zealand batsmen got 82 off the last 10 overs but the bowlers didn't make it easy.
Kulasekara was the most successful with three for 53.
After today, the teams have two T20 internationals, in Mt Maunganui and at Eden Park to finish the tour.