Sent into bat, Jos Buttler provided a late flourish with a quick-fire unbeaten 61 after Joe Root scored a fluent half- century to propel England to 310 all out.
Later, England came out with purpose and produced a fine bowling and fielding display to bundle out New Zealand for 223 in 44.3 overs.
The win meant England became the first team to qualify for the last four round from Group A with two wins from as many matches.
With one point in their kitty, New Zealand will now have to win their last group match against Bangladesh and hope England beat Australia to progress into the knock-out stages of the tournament.
Chasing an imposing 311, New Zealand did not have the best of starts as they lost Luke Ronchi in the first over, bowled by Jake Ball (2/31). Martin Guptill (27) too did not have a great time at the crease as he departed in the 14th over, caught by Root off Ben Stokes.
Then came in skipper Kane Williamson (87 off 98 balls) and he showed intent. Together with Ross Taylor (39), Williamson stitched 95 runs for the third wicket to keep New Zealand in the hunt.
Williamson showed his class and struck as many as eight boundaries to take New Zealand forward. But just when it seemed the duo were in course to take New Zealand ahead, Williamson edged one to Root behind the stumps off the bowling of Mark Wood (1/32).
Williamson's dismissal marked New Zealand's downfall as Taylor departed soon caught by Root off Ball. Thereafter, it was an uphill task for New Zealand as the asking rate crept on creeping up with every passing over and the rest of the Kiwi batsmen found it difficult to cope up with the pressure.
James Neesham (180), Neil
Broom (11) and Correy Anderson (10) tried hard to dig New Zealand out of the trouble but their contributions were not good enough.
Liam Plunkett was the pick of the bowlers for England with figures of four for 55. Leg-spinner Adil Rashid also picked up two crucial wickets giving away just 47 runs from his 10 overs.
Earlier, Buttler's knock which came off just 48 balls with the help of two fours and two sixes provided the just- needed impetus to England's innings to get past the 300-run mark.
Sent into bat, Root continued his good form and followed up his 133 not out against Bangladesh with a 65-ball 64 and together with Hales (56 off 62 balls) shared 81 runs for the first wicket to set the base for England after the early dismissal of Jason Roy (13).
Root decorated his innings with four boundaries and two sixes while Hales struck three fours and two hits over the fence.
Buttler and Root stitched 54 runs for the fourth wicket before the Kiwis picked up wickets at regular intervals to put brakes on England innings.
But Buttler ensured England get past the psychological 300-run mark with a crucial 49-run stand off just 30 balls for the eighth wicket with Liam Plunkett (15).
Towards the end, Buttler ran out partners as Tim Southee (2/44) went through England's lower-order.
Right-arm pacer Adam Milne (3/79) inflicted the early damage for England by removing Roy and Hales before Correy Anderson (3/55) struck thrice in the middle overs getting the important wickets of skipper Eoin Morgan (13), Root and Moeen Ali (12).
Besides, Trent Boult (1/56) and Mitchell Santner (1/54) picked up a wicket each for New Zealand.