Captain Brendan McCullum broke his own record for the fastest century scored by a New Zealander (74 balls) as they posted 441 on day one.
Sri Lanka scored 138 in their first innings but Dimuth Karunaratne’s maiden Test ton saw them reach 407 following on as they set New Zealand 105 to win.
Ross Taylor (39) and Kane Williamson (31) guided the home side to victory.
New Zealand were asked to bat first at the Hagley Oval in Christchurch and McCullum struck 18 fours and 11 sixes in his 195 off 134 balls as he became the first Kiwi to score 1,000 Test runs in a calendar year.
He also came within one scoring shot of breaking team-mate Nathan Astle’s record for the quickest Test double century, scored off 153 deliveries against England in 2002.
Fast bowlers Trent Boult and Tim Southee then took five wickets for 42 runs between them as Sri Lanka were bowled out for 138 and asked to bat again.
Sri Lanka opener Dimuth Karunaratne, who was dismissed for a duck in the first innings, batted for more than seven hours for his 154 before being bowled by Boult (4-100) as Sri Lanka reached the close on day three on 287-5.
Southee then took three quick wickets on the fourth morning before Shaminda Eranga and Suranga Lakmal’s last-wicket stand of 59 frustrated New Zealand’s bowlers.
Sri Lanka captain Angelo Mathews chose off-spinner Tharindu Kaushal to share the new ball with Eranga and the decision paid off when opener Tom Latham (17) edged to Mathews at slip.
Eranga then removed Hamish Rutherford (10) to leave New Zealand on 43-2 before Taylor and Williamson guided them to victory.
The Black Caps had earlier enjoyed 2014 series wins at home against India (1-0) and away in the West Indies (2-1) as well as a 1-1 draw with Pakistan in the United Arab Emirates earlier this month.
The second and final Test in the series begins in Wellington on Saturday with Sri Lanka’s Kumar Sangakkara still five runs short of becoming the fifth player to reach 12,000 runs in Tests after managing only 6 and 1 in his two innings in Christchurch.