The overwhelming victory gave New Zealand the series 1-0 after the first Test in Wellington was drawn.
This is the first time in their 88-year Test history that New Zealand have won four successive series, following wins over the West Indies, England and Pakistan this year.
Trent Boult and Neil Wagner mopped up the innings to have Sri Lanka 236 for nine with the injured Angelo Mathews not returning to finish his innings.
Sri Lanka resumed Sunday on 231 for 6 and were in immediate trouble.
Suranga Lakmal was bowled by Trent Boult on the third ball of the morning without adding to his overnight 18.
Neil Wagner had Dilruwan Perera caught in the next over for 22 before Boult came back to finish the innings, trapping Dushmantha Chameera in his second over for three.
Wagner, who had struggled for wickets earlier in the series, found the Christchurch conditions to his liking and took 4 for 48. Boult finished with 3 for 77.
Sri Lanka held a slight edge on day one of the second Test when they rolled New Zealand for 178 after winning the toss and bowling first on the green-topped wicket.
But six wickets for four runs in a 15-ball burst by Boult brought New Zealand back into the game, with Sri Lanka's first innings folding at 104.
From there, it was all New Zealand's as a second innings 176 from Tom Latham and an unbeaten 162 by Henry Nicholls saw the home side declare at 585 for four, giving Sri Lanka an improbable 660-run target.
First Published: December 30, 2018, 4:28 AM IST