The Kiwis, set an improbable target of 413 runs, collapsed to 210 all out in their second innings before tea on the fifth and final day at the Galle International Stadium.
Despite some fine bowling, Sri Lanka captain Kumar Sangakkara singled out for praise Tillakaratne Dilshan, who was named man of the match for his 92 and 123 not out while opening the batting for the first time in Tests.
"Dilshan has matured as a cricketer and taken on a lot of responsibility and his two knocks helped us gain the advantage," said Sangakkara.
"I would not call this an easy win, but if New Zealand had showed the character that Vettori did -- and they had a few partnerships going -- this game could have been stretched a bit.
"I am glad the way we are going. It is important to win, but more important to win consistently and I think we have been able to achieve that in the last few years."
Sri Lanka, who beat Pakistan 2-0 last month, will climb to number two behind South Africa in the world rankings if they sweep this series and Australia lose the ongoing Oval Test against England.
Off-spinner Muttiah Muralitharan was again a thorn in the tourists´ side, claiming 3-88 to take his world record tally to 777 wickets, while left-arm seamer Thilan Thushara and spinner Ajantha Mendis picked up two scalps each.
The Kiwis, who had 13 of their 15 players affected by a stomach bug and viral fever, had been left hoping the weather might do them a favour -- only for clear skies to break over the coastal town for the first time since the Test began.
Skipper Daniel Vettori battled bravely for two-and-a-half hours to make 67, his 20th Test fifty, sparking a brief resistance by the lower order after the Kiwis were reduced to 86-5.
Jesse Ryder, one of the players worst affected by the virus, defended for almost an hour to add 48 for the sixth wicket with his captain before he was caught behind off Muralitharan for 22 soon after lunch.
Jeetan Patel hit 22 and Brendon McCullum, who was confined to bed on Friday due to fever, made 29 before he was last man to be dismissed, a run-out victim of a direct throw from Muralitharan.
Wicket-keeper Prasanna Jayawardene, returning to the side after missing the previous series against Pakistan with a knee injury, chipped in with three catches and a stumping.
Vettori refused to blame illness for New Zealand´s defeat, saying the lack of big scores cost the tourists the match.
"The key to the match was how well Dilshan played and how poorly we responded to the challenge with both bat and ball," the 93-Test veteran said.
"We needed to bat long periods of time and the top order had to stand up and be counted.
"I think some of us tackled the spinners well but the most disappointing aspect of the defeat was we lost about eight wickets to seam bowlers.
"Having so many players ill during the match was not the ideal situation, but we could have fought better. I look forward to the next Test and hopefully we will have learnt our lessons."
The second and final Test will be played at the Sinhalese sports club in Colombo from Wednesday.
New Zealand will also play two Twenty20 internationals against Sri Lanka and a limited-overs tri-series with India as the third team.
Foreign Minister Paudyal discusses connectivity issue with Sri...