Kieran Trippier put the Three Lions into the lead but goals from Ivan Perisic and Mario Mandzukic sealed Croatia’s place in Sunday’s final against France.
England took the lead in the 5th minute with a stunning free kick from Kieran Trippier after Dele Alli was brought down just outside the penalty box by Croatia’s captain Luka Modric.
The Tottenham defender’s curling shot – reminiscent of a David Beckham strike – flew into the top corner and sparked jubilant scenes among England fans.
The goal was followed by a series of chances for England as Croatia struggled with the pace of the Three Lions’ attack.
Harry Kane hit the post with a rebounded shot at a tight angle after his first effort was saved by Croatia’s goalkeeper Danijel Subasic.
Minutes earlier Kane had been left one-on-one with Subasic but put his strike wide, although he had been flagged offside.
Jesse Lingard also went close after finding space at the edge of the box but his shot crept narrowly wide.
Croatia edged back into the game near the end of the first half and defender Dejan Lovren felt he should have had a penalty on the stroke of half time.
Lovren got in a tangle with Harry Maguire in England’s box following a free-kick but the referee refused to give a spot-kick after consulting with VAR.
England continued to look strong at the start of the second half and Kane nearly got on the end of a terrific cross on the volley by Trippier.
Raheem Sterling, who was a constant threat throughout the game, had a decent shout for a penalty after he appeared to be tripped by Domagoj Vida.
Soon after Kyle Walker bravely blocked a shot by Ivan Perisic that looked to be flying into the net.
Croatia drew level in the 68th minute after forward Perisic fired in a shot following a deep cross from defender Sime Vrsaljko.
And they nearly took the lead four minutes later after sloppy England defending allowed Perisic to nip in before his shot hit the post.
After a period of pressure from Croatia, Lingard nearly put England back in the lead with a strike across the face of goal.
But Croatia continued to pose a threat and a half-volley from striker Mario Mandzukic forced a great save from England goalkeeper Jordan Pickford.
As the game entered extra-time, England came agonisingly close to taking the lead when John Stones’ header from a corner was cleared off the line.
Pickford, outstanding throughout the tournament, produced another sensational save at close range from Mandzukic.
But the Juventus striker made no mistake in the second-half of extra time as he struck a low left-footed shot past Pickford.