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.
Croatia: Subasic (7), Vrsaljko (6), Strinic (6), Lovren (7), Vida (6), Rakitic (5), Modric (7), Brozovic (6), Perisic (8), Rebic (6), Mandzukic (7).
Subs: Kramaric (5), Pivaric (5), Corluka (NA), Badelj (NA).
England: Pickford (7), Walker (8), Stones (6), Maguire (7), Trippier (8), Henderson (7), Lingard (6), Alli (6), Young (6), Sterling (7), Kane (6).
Subs: Rashford (6), Rose (5), Dier (5), Vardy (NA).
Man of the Match: Kieran Trippier.
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 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.
With no injuries to worry about, Gareth Southgate named an identical team to that which began the last-16 game against Colombia and the quarter-final against Sweden. Injury concerns over Croatia full-back Sime Vrsaljko came to nothing as the Atletico Madrid defender started. Former Leicester forward Andrej Kramaric did not make the cut, though, dropped to the bench in favour of holding midfielder Marcelo Brozovic.
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.
- England have now been eliminated in four of their five semi-finals at major tournaments, losing each of the last four in a row (Euro 1968 v Yugoslavia, World Cup 1990 v Germany, Euro 1996 v Germany and World Cup 2018 v Croatia).
- Croatia have qualified for their first World Cup final in their fifth appearance at the World Cup finals.
- England have lost three competitive games against Croatia (3) since the turn of the Millennium, more than any against any other nation.
- Mario Mandzukic's winning goal was the latest goal ever conceded by England in a World Cup match (108:03).
- Kieran Trippier became the first player to score a direct free-kick for England at the World Cup since David Beckham in 2006 (against Ecuador).
- Ivan Perisic has been involved in 10 goals at major tournaments for Croatia (6 goals, 4 assists), the joint-most, level with Davor Suker (9 goals, 1 assist).
Man of the Match - Kieran Trippier
Few would have had Trippier down as first goalscorer. The Tottenham full-back had not scored since February 2016 and never in an England shirt. But Trippier needed only five minutes to become the third Englishman to score in a World Cup semi-final, following in the illustrious footsteps of Sir Bobby Charlton and Gary Lineker. Trippier does not take free-kicks at Spurs with Christian Eriksen around, and is known as the 'Bury Beckham' because of his delivery from the right rather than his set-piece ability. But after his Moscow masterpiece, it might be a case of Beckham now being known as the 'Walthamstow Trippier'.
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.