The paceman finished with a career-best 4-28 as New Zealand were dismissed for 119 chasing a 217-run target on a slow pitch in the day-night match.
Man-of-the-match Thilan Samaraweera earlier cracked a solid 104 under pressure for his maiden one-day century to help Sri Lanka post a competitive total before Malinga completed the victory under lights.
Malinga bowled opener Brendon McCullum with the second ball of his fourth over, had Jacob Oram caught behind and then bowled Nathan McCullum with the last two deliveries to send the tourists reeling at 41-6.
Grant Elliott top-scored with 41. Ian Butler (25), McCullum (14) and skipper Daniel Vettori (10) were the other batsmen to reach double-figures in a dismal batting performance.
The hosts put New Zealand under pressure when they grabbed three wickets in the opening five overs, with Nuwan Kulasekara taking two in one over and Thilan Thushara one.
Thushara was the first to strike when he trapped Jesse Ryder leg-before in his