Mario Mandzukic scored in the 109th minute of extra time Wednesday to send Croatia past England and into Sunday's World Cup final against France with a 2-1 victory.
England, who were hoping to reach their first World Cup final since their golden year of 1966, will play Belgium in Saturday's third-place match.
England had their fans dreaming of a berth in the final when Kieran Trippier curled a fifth-minute free kick into the Croatia net. But Croatia clawed their way back into the match and equalized in the 68th minute when Ivan Perisic beat Kyle Walker to Sime Vrsaljko's cross and finished past Jordan Pickford.
Croatia had the better of the chances in the remainder of regulation, but England appeared to recover well in the first half of extra time and would have taken the lead in the 98th minute but for Vrsaljko clearing a header by John Stones off the line.
Stones was victimized by Mandzukic a little more than ten minutes later as the Juventus star latched on to a loose ball and fired it past Pickford, prompting wild celebrations in Moscow's Luhzniki Stadium. The Croatians and their fans will all be back on Sunday for the final, their first ever.
"Mentally strong team," midfielder Ivan Rakatic said. "It's just unbelievable to get back in the game in this way."
France, which won its only title at home in 1998, will have an extra day of rest after beating Belgium 1-0 on Tuesday. Croatia will be coming off its third straight extra-time match and is the first team in 28 years to come from behind to win a World Cup semifinal.
For England, who captured so many hearts with their run to the semifinals, there will be the same disappointment that has haunted them at big tournaments across the world for 52 years ... and counting.
"I can't ask any more," England manager Gareth Southgate said of his team. "Knockout football is fine margins. When you have spells, you have to make them count. We probably needed that second goal [in the first half]."
The Associated Press contributed to this report.