Eddie Jones’ side will face either South Africa or Wales in next Saturday’s final, after sealing a famous victory over the All Blacks.
They will be attempting to win a second Rugby World Cup, having last lifted the William Webb Ellis trophy in 2003.
England led 10-0 at the break through Manu Tuilagi's try, Owen Farrell's conversion and a George Ford penalty.
Ardie Savea's converted try got New Zealand back in the game, but Ford kicked three second-half penalties to seal victory.
England were competing a first semi-final in 12 years and they made a blistering start to the game.
After forming a V-shape to face the Haka and a late switch of kicker for kick off England were over after 98 seconds, inflicting the fastest try their shell-shocked opponents had conceded in Rugby World Cup history.
Tuilagi crashed over after an electric England attack stretched New Zealand and the centre sniped over under the posts.
England were close to a second inside 10 minutes, May failing to finish an overlap on the left wing with Scott Barrett thwarting the wing.
For the second game in a row against New Zealand Sam Underhill had a try disallowed with Tom Curry penalised for an earlier obstruction as England continued to put pressure on their opponents.
New Zealand's set piece creaked throughout a difficult first half for the reigning champions, with England stealing two lineouts in key positions, as well as winning a scrum penalty against their opponents with Maro Itoje central to their fine first-half performance.
England were also having success at the breakdown, Curry continuing to be a menace over the ball, and a further New Zealand indiscretion saw Ford slot a penalty on the stroke of half-time.
It meant England reduced New Zealand to an entire half without conceding a point - only the second time they had failed to score in Rugby World Cup history, the last against Australia in the 1991 semi-final.
England were denied a second try after 45 minutes, a penalty was kicked to the corner and Youngs sniped through off the back of the resulting maul, but it was ruled out for an earlier infringement.
Ford slotted a second penalty with 30 minutes remaining but New Zealand soon sparked into gear and after a period of pressure Savea collected an overthrown England lineout on the five metre line and he had a free run to the tryline for New Zealand’s first points which Richie Mo'unga converted.
Ford kicked a penalty on the hour for a nine-point lead, which became an advantage of 12 with 11 minutes remaining as England's fly-half controlled the game and continued his fine Rugby World Cup form.
In front of Ford he had a pack who were playing at the top of their game, Maro Itoje, Curry and Underhill all putting in stellar performances to help keep the All Blacks at bay.
England survived late pressure but it was too little too late from the two-time World champions as Jones' side saw out the game.
England: Tries - Tuilagi Cons - Farrell Pens - Ford 4
New Zealand: Tries - Savea Cons - Mo'unga
England: Elliot Daly; Anthony Watson, Manu Tuilagi, Owen Farrell, Jonny May; George Ford, Ben Youngs; Mako Vunipola, Jamie George, Kyle Sinckler; Maro Itoje, Courtney Lawes; Tom Curry, Sam Underhill, Billy Vunipola.
Replacements: Luke Cowan-Dickie, Joe Marler, Dan Cole, George Kruis, Mark Wilson, Willi Heinz, Henry Slade, Jonathan Joseph.
New Zealand: Beauden Barrett; Sevu Reece, Jack Goodhue, Anton Lienert-Brown, George Bridge; Richie Mo'unga, Aaron Smith; Joe Moody, Codie Taylor, Nepo Laulala, Brodie Retallick, Sam Whitelock, Scott Barrett, Ardie Savea, Kieran Read (capt).
Replacements: Dane Coles, Ofa Tuungafasi, Angus Ta'avao, Patrick Tuipulotu, Sam Cane, TJ Perenara, Sonny Bill Williams, Jordie Barrett.