Playing his first match of the tournament proper, the spinner remarkably claimed five wickets for three runs as New Zealand managed only 60 in 15.3 overs.
With the victory, Sri Lanka joined South Africa in the last four from Group One.
New Zealand began their chase one batsman short after all-rounder Corey Anderson dislocated a finger trying to take a catch.
Herath took four wickets in his first three overs to leave the Kiwis reeling at 29 for five in the eighth over.
Kane Williams (42), the only Kiwi batsman to manage double digits, tried his best to offer some resistance but could not stop New Zealand from folding for their lowest total in 20-over cricket.
Leading Sri Lanka in the absence of Dinesh Chandimal, who served a one-match ban for his team's second over-rate offence in 12 months, Lasith Malinga initially watched in dismay as Trent Boult wrecked his top order with a three-wicket burst.
Jimmy Neesham (3-22) then polished off the tail to bowl Sri Lanka out for 119 in 19.2 overs but New Zealand's hopes of an easy chase were soon over as they capitulated.
- Sports & Recreation
- Sri Lanka
- New Zealand