Under the Duckworth-Lewis system, Sri Lanka won by 18 runs after New Zealand made 162 for eight and Sri Lanka were 62 for one after 5.5 overs when the heavy rain forced players from the field on Friday.
After a rollicking start by Stephen Fleming and Brendon McCullum produced 80 runs in seven overs, New Zealand's batting faltered and they added just 82 runs in the remaining 13 overs.
Man-of-the-match Sanath Jayasuriya led Sri Lanka's reply with a near-solo masterpiece, hitting a rapid 51 in 23 balls, including 10 fours and one six, to score all but 11 of Sri Lanka's 62 runs.
New Zealand's opening onslaught came to an end when Farveez Maharoof bowled Fleming for 38 with a slower ball.
Spin twins Muttiah Muralitharan and Jayasuriya applied the pressure and the run rate slowed to a crawl.
Muralitharan was hit for two sixes in his first three balls before McCullum mistimed a slog and was caught by Upul Tharanga at deep midwicket for 39.
James Franklin, sent in as a pinch hitter, was trapped leg before wicket by Jayasuriya for 18, and Ross Taylor went lbw to Muralitharan for 21.
James Marshall lasted four balls and made one run before before being caught by a leaping Chamara Silva at midwicket for Jayasuriya's second wicket.
New Zealand turned to the veteran Nathan Astle to arrest the middle order collapse but he was bowled by Jayasuriya for 19.
With New Zealand finding runs hard to come by and wickets falling regularly, Silva was called on to bowl and he removed debutant wicketkeeper Peter McGlashan for five.
Shane Bond was back in the pavilion soon after, bowled by Chaminda Vaas without scoring.
Jayasuriya finished with figures of four for 21 from four overs, while Muralitharan took two for 27.
The only wicket to fall in Sri Lanka's run chase was that of Tharanga, who was caught by Fleming off the bowling of Bond for six.
The second and final Twenty20 match is at Auckland on December 26 and the first of the five one-day internationals is at Napier on December 28.