Chasing 125, New Zealand got a rapid start courtesy of a series of boundaries from the bat of Daryl Mitchell and Martin Guptill before the former was dismissed by Mujeeb Ur Rahman. Guptill capped off the powerplay at 45/1 with a couple of more boundaries to Mujeeb.
Afghanistan then tightened things for a while conceding 16 runs in the next four overs with Rashid Khan castling Guptill.
Kane Williamson played the anchor role with Devon Conway taking boundaries off Nabi and Rashid to bring the required rate under 5 heading into the death overs. Conway and the Kiwi skipper made a light work of the remaining runs and completed the chase in the 19th over becoming the second team, after Pakistan, to reach the semis from Group 2.
Earlier, after electing to bowl first, New Zealand took control of the game in the powerplay with three wickets. Adam Milne bounced out Mohammad Shahzad, Trent Boult had Hazratullah Zazai via a leading edge, caught at mid-wicket. Tim Southee then trapped Rahmanullah Gurbaz plumb in front of stumps. Afghanistan were 23/3 at the end of the powerplay.
Despite his side being in a pickle, Najibullah Zadran was not shedding his attacking instincts. He creamed a flurry of boundaries but saw his partner, Gulbadin Naib, inside edging Ish Sodhi onto the stumps.
After a period of lull, Najibullah clubbed Mitchell Santner for a couple of maximums and soon raised his fifty off 33 balls. Najibullah smacked Southee for a six and a four but the veteran seamer dismissed Nabi, caught and bowled.
New Zealand pacers kept a tight leash in the death overs: Trent Boult conceded just 12 runs in his two death overs for the wickets of Najibullah and Krim Janat while James Neesham bowled an outstanding last over, giving away only 2 runs as Afghanistan trudged to 124.
The result of the Pakistan-Scotland game later in the day will decide the final standings of Pakistan and New Zealand and their semi-final opponents from Group 1. England and Australia qualified for the semis on Saturday.