Croatia will face France in their first World Cup final after coming from behind to dash England's dreams with a 2-1 extra-time victory at the Luzhniki Stadium.
Mario Mandzukic scored the goal that broke English hearts on 109 minutes as Croatia emulated their heroes of 1998 by securing their place in football's greatest game for the very first time.
It all started so promisingly or England who took the lead through Kieran Trippier's wonderful fifth-minute free-kick but Ivan Perisic forced extra-time with Croatia's equaliser on 68 minutes.
Juventus striker Mandzukic then capitalised on a brief lapse in the English defence to put Croatia ahead for the first time, and there was no way back for Gareth Southgate's tiring side.
The defeat ends England's hopes of a first world title since 1966, but they have the chance to salvage bronze in Saturday's third-place play-off against Belgium.
England would have been forgiven for feeling nervous ahead of their first World Cup semi-final in 28 years, but, to the contrary, Southgate's youthful side got off to the perfect start as Trippier curled a delightful 20-yard free-kick into the Croatian net with just five minutes on the clock.
England would go on control the first period against a lethargic Croatian outfit, who took 19 minutes to register their first attempt, Perisic dragging two shots wide having cut in from the left.
England remained composed and in control and should have doubled their lead on the half-hour mark, but Danijel Subasic denied Harry Kane from a Jesse Lingard through pass and before the Tottenham's striker struck the rebound against the post.
That kicked Croatia into gear and England needed a last-gasp block from John Stones to cut out an Ante Rebic's cross before the full-back fired a follow-up straight down Jordan Pickford's throat.
England responded but a second goal remained out of reach as Lingard fired a glorious chance wide after Dele Alli's clever square on 36 minutes.
England's inability to convert their dominance into goals nearly came back to bite them when Dejan Lovren went down in the area under a Harry Maguire challenge, but a VAR review after the half-time whistle had sounded proved inconclusive.
Croatia improved after the interval but still needed some fine defending from Lovren to prevent a Lingard volley from finding the target and a Trippier cross from reaching Kane on 58 minutes.
But England invited more and more pressure on themselves and Croatia finally made them pay on 68 minutes as Perisic - a minute after Kyle Walker brilliantly blocked his goal-bound strike - stole a march on the Manchester City defender to poke Sime Vrsaljko's whipped cross beyond Pickford.
Things nearly went from bad to worse for England four minutes later as Perisic nipped in between Stones and Pickford to gather the loose ball and rattled a low drive against the post.
Nerves began to take their toll on Southgate's men for the first time, and errors began to creep into their game as Mandzukic and Perisic were both presented with a sight of the England goal in the closing 10 minutes.
Kane had the chance to send England through in stoppage-time but he headed a presentable chance wide from a Trippier free-kick.
Vrsaljko headed a goal-bound Stones header off the line nine minutes into extra-time before a stunning point-blank save from Pickford prevented Mandzukic from putting Croatia ahead.
But when Stones and Walker let a ball bounce in their area, Mandzukic finally got the better of Pickford with a low drive into the bottom corner.
Croatia will remain in Moscow for Sunday's World Cup final against France while England travel to Saint Petersburg for Saturday's third-place play-off against Belgium.