Victory meant England had won both their opening Group A games following their eight-wicket defeat of Bangladesh at the Oval last week.
New Zealand, set 311 for victory, were bowled out for 223 with 39 balls left in their innings.
Fast bowler Mark Wood took the key wicket of Blackcaps skipper Kane Williamson to dismiss the star batsman for 87.
Earlier Joe Root’s 64 and Jos Buttler’s quickfire 61 not out were the cornerstones of England’s 310 all out after they lost the toss, with New Zealand pacemen Corey Anderson and Adam Milne taking three wickets apiece.
Victory meant England were through to the last four of a tournament featuring the world’s top eight one-day international teams regardless of the outcome of their last group match against arch-rivals Australia at Edgbaston on Saturday.
England 310, 50 overs (J Root 64, J Buttler 61 no, A Hales 56; C Anderson 3-55, A Milne 3-79)
New Zealand 223, 44.3 overs (K Williamson 87; L Plunkett 4-55) Result: England won by 87 runs
Eoin Morgan (capt)
Jos Buttler (wkt)
Luke Ronchi (wkt)
Kane Williamson (capt)