Croatia showed magnificent resilience to come from behind and beat England 2-1 on Wednesday as Mario Mandzukic's extra-time goal sent them into their first World Cup final and sparked celebrations across the Balkan nation.
England had looked on course for their first final since 1966 as they led through Kieran Trippier's fifth-minute free kick and totally dominated the opening half.
But Croatia, in their first semi since 1998, levelled through Ivan Perisic after 68 minutes and then looked the more dangerous side.
But instead of flagging, they seemed to gain in energy and avoided a third shootout when Mandzukic struck with a well-taken low shot in the 109th minute.
Since their dream run to the last four in 1998, their first tournament as an independent nation, Croatia have failed to get past the group stage, with every subsequent failing team being compared unfavourably with the heroes of France.
This group, however, have gone one better and will get the chance to avenge the defeat of 20 years ago when they face the French on Sunday back at the same Luzhniki Stadium.
"We are deservedly in the final," Croatia coach Zlatko Dalic said. "What the lads played tonight is fantasy, they've made history. We haven't said our last word, there is still one more game to go. God willing, we will be world champions."
England had got off to a flying start when Trippier curled a superb free kick into the top corner.
It was their 12th goal of the tournament and ninth from a set-piece, but they should have added more from open play as they revelled in the space they were being given and looked completely in command.
Harry Kane shot weakly at Danijel Subasic and forced the rebound against a post while Raheem Sterling was a constant thorn in the Croatia defence.
The best chance for a second England goal was wasted by an unmarked Jesse Lingard when he curled wide when a goal looked certain.
Croatia had been desperately poor, a shadow of the team who carved Argentina apart in the group stage, but started to get a foothold in the game as the match rolled past the hour mark and Luka Modric's influence grew.
Perisic should have added another when given a great shooting chance but he cannoned the ball against a post as England's defence began to lose shape.
It was a different game from then on, with Croatia suddenly playing with accuracy and purpose as England lost momentum, though Kane missed a chance to win it in stoppage time when he headed wide from a free kick.
England initially regrouped well in extra time with Marcus Rashford introducing some pace and Croatia were grateful for Vrsaljko's goalline clearance of a John Stones header.
But it was Croatia who struck the killer blow when Perisic won a header on the edge of the box, England lost concentration and the ball dropped for Mandzukic, whose firm low finish beat Jordan Pickford.
"We were like lions out there tonight and we will be the same in the final."
England captain Kane said the loss would hurt for a long time.
"We created some good chances when we were 1-0 up, maybe we dropped a little too deep and we didn't get enough pressure on the ball," he said. "There's a lot we could have done better."
"When you have spells, you have to make them count; we probably needed that second goal," he said.
"We’ve come an incredible long way in a short space of time. We are probably beyond where we thought we might be able to go. So tonight we weren’t quite there, but the team will be stronger for that.”