Roy clobbered 11 fours and two sixes off 44 balls during his maiden T20 half-century, as England scored 159-3 in 17.1 overs after Ben Stokes (3-26) helped restrict New Zealand to 153-8.
He added 82 for the first wicket with Alex Hales (20) to all but take the tournament’s first semifinal away from New Zealand.
Earlier, New Zealand were put into bat and lost opener Martin Guptill early but skipper Kane Williamson and Colin Munro counter-attacked with a 74-run partnership to lay a solid foundation before the Kiwis faltered late on.
Munro (46) and Williamson (32) proved too hot to handle for England’s pacers as the duo took a special liking to Liam Plunkett and Stokes in the opening stages, both of whom came back well in their second spells.
Left-hander Munro smacked Plunkett for three straight boundaries in the sixth over of the innings to set the pace and his reverse-hit for a six against Adil Rashid brought the house down at a packed Feroz Shah Kotla stadium.
But England skipper Eoin Morgan then juggled his bowlers around and off-spinner Moeen Ali’s introduction in the 11th over soon saw the back of Williamson.
Plunkett did well in his second spell to deny the dangerous Munro, whose 32-ball knock included seven boundaries and a six. He was denied his fifty when a wild slice went straight into the safe hands of Ali at third man.
England’s fielders continued to pouch their catches and Morgan dived beautifully at extra cover to get rid of Ross Taylor off Chris Jordan.
The wickets quickly tumbled and New Zealand’s run-rate, which had started impressively, plummeted.
Stokes was going for a hat-trick near the end after sending back Luke Ronchi for three and the hard-hitting Corey Anderson for 28.
The impressive all-rounder ended with figures of 3-26 as New Zealand lost five wickets for 35 runs in the final 30 deliveries of their innings.