Luka Modric's team fell behind in just the fifth minute to Kieran Trippier's superb free-kick but hit back through Ivan Perisic and Mandzukic to win a tense contest 2-1 in front of 78,000 spectators in the Luzhniki Stadium.
In beating Gareth Southgate's young team, Croatia -- a country of just four million people -- have surpassed the achievements of the heroes of 1998, who reached the semi-finals in France.
Croatia's players celebrated wildly in front of their supporters in Moscow while in Zagreb tens of thousands of fans poured onto the streets and squares, singing and waving red-white-and-blue flags.
Having led for over an hour, the defeat will be difficult for England to digest as their hopes of reaching a first World Cup final since 1966 were crushed, but their young team have won many admirers in Russia.
Croatia must recover quickly for Sunday's showpiece -- no easy feat after being taken to extra-time for a third consecutive match.
"It was a very difficult game, we all know what was at stake, how important a semi-final is for a small country like Croatia," said man-of-the-match Perisic.
"We started slowly but we've shown our character, just as we have in the previous two knockout rounds when we were one goal down in both matches. We didn't used to be that resilient.
"Twenty years ago I was back home in Omis, my home town. I rooted for Croatia, wearing a Croatia jersey, and I could only dream of playing for my country and scoring one of the most important goals to send us to a final."
- 'We're gutted' -
England's players slumped to the ground at the final whistle, barely able to believe their World Cup dream was over after reaching the semi-final for the first time since 1990.
"We're gutted," said Harry Kane, still on course to finish as the tournament's top goalscorer with six strikes in Russia, even though his golden touch deserted him on Wednesday.
"It hurts, it hurts a lot. It's going to hurt for a while of course. We can hold our heads up high. It's been a fantastic journey. We got further than anyone else could thought we would have."
"I can't ask for more from the players," said a disappointed Southgate. "I think knockout football is about fine margins and when you have good spells against fine sides you need to take your chances.
"Tonight we weren't quite there but we will learn from that. We left everything out there."
In London, an initial wave of elation turned to heartbreak as 30,000 beer-soaked fans in Hyde Park watched their team come up short.
Around 30 million people were believed to have watched the match on TV in Britain.
Trippier gave England a dream start, curling in a free-kick from 25 yards past the despairing dive of Danijel Subasic after Dele Alli was brought down in a central position.
Croatia started to find their range in the second half and Perisic levelled for Croatia in the 68th minute, nipping ahead of Kyle Walker to steer home Sime Vrsaljko's cross past a diving Jordan Pickford.
The game went into strength-sapping extra-time and Mandzukic scored the winning goal in the 109th minute, sweeping the ball low past Pickford after Perisic's header back into the area caught the England defence on the hop.
Prince William, the president of the Football Association, said despite the defeat England could be proud of Southgate's team.
"I know how disappointed @england must feel right now but I couldn't be more proud of this team and you should hold your heads high," he tweeted.
- Solid French defence -
France have the advantage of a day's more rest than their opponents after they reached the final for the third time in their history on Tuesday.
A second-half header from Samuel Umtiti proved enough for a 1-0 victory against Belgium in Saint Petersburg, sending tens of thousands of people pouring onto the Champs-Elysees avenue in Paris in scenes of joy last seen when France won the World Cup on home soil in 1998.
Despite the much-vaunted attack of teenager Kylian Mbappe and Antoine Griezmann, France's defence proved the difference as they shut down Eden Hazard and Romelu Lukaku and showed they will be hard to beat on Sunday.