England's wait for a first major men's trophy since 1966 goes on after substitute Mikel Oyarzabal struck at the death as Spain inflicted a second successive European Championship final defeat on Gareth Southgate's side.
Three years ago the nation stood on the edge of history, only for an agonising, all too familiar, shoot-out defeat meaning they had to walk past the trophy as Italy celebrated long into the Wembley night.
England overcame an unconvincing start in Germany to make another continental showpiece, but the country's first ever final on foreign soil ended more heartbreak as silky Spain triumphed 2-1 at the Olympiastadion.
Substitute Cole Palmer's superb equaliser had breathed new life into Southgate's side after Nico Williams shook what had looked sturdy foundations 69 seconds into the second half.
Euro 2024 fixtures and results
(All times BST)
Last-16
Saturday, June 29
Sunday, June 30
Monday, July 1
6: Portugal 0-0 Slovenia (pens 3-0)
Tuesday, July 2
Quarter-finals
Friday, July 5
2: Portugal 0-0 France (3-5 pens)
Saturday, July 6
3: England 1-1 Switzerland (5-3 pens)
Semi-finals
Tuesday, July 9
Wednesday, July 10
Final
Sunday, July 14
Group Stage
Group A
Friday, June 14
Saturday June 15
Wednesday June 19
Sunday, June 23
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Germany |
3 |
2 |
1 |
0 |
8 |
2 |
+6 |
7 |
2 |
Switzerland |
3 |
1 |
2 |
0 |
5 |
3 |
+2 |
5 |
3 |
Hungary |
3 |
1 |
0 |
2 |
2 |
5 |
-3 |
3 |
4 |
Scotland |
3 |
0 |
1 |
2 |
2 |
7 |
-5 |
1 |
Group B
Saturday, June 15
Wednesday, June 19
Thursday, June 20
Monday, June 24
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Spain |
3 |
3 |
0 |
0 |
5 |
0 |
+5 |
9 |
2 |
Italy |
3 |
1 |
1 |
1 |
2 |
2 |
0 |
4 |
3 |
Croatia |
3 |
0 |
2 |
1 |
3 |
6 |
-3 |
2 |
4 |
Albania |
3 |
0 |
1 |
2 |
3 |
5 |
-2 |
1 |
Group C
Sunday, June 16
Thursday, June 20
Tuesday, June 25
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
England |
3 |
1 |
2 |
0 |
2 |
1 |
+1 |
5 |
2 |
Denmark |
3 |
0 |
3 |
0 |
2 |
2 |
0 |
3 |
3 |
Slovenia |
3 |
0 |
3 |
0 |
2 |
2 |
0 |
3 |
4 |
Serbia |
3 |
0 |
2 |
1 |
1 |
2 |
-1 |
2 |
Group D
Sunday June 16
Monday, June 17
Friday, June 21
Tuesday, June 25
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Austria |
3 |
2 |
0 |
1 |
6 |
4 |
+2 |
6 |
2 |
France |
3 |
1 |
2 |
0 |
2 |
1 |
+1 |
5 |
3 |
Netherlands |
3 |
1 |
1 |
1 |
4 |
4 |
0 |
4 |
4 |
Poland |
3 |
0 |
1 |
2 |
3 |
6 |
-3 |
1 |
Group E
Monday, June 17
Friday, June 21
Saturday, June 22
Wednesday, June 26
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Romania |
3 |
1 |
1 |
1 |
4 |
3 |
+1 |
4 |
2 |
Belgium |
3 |
1 |
1 |
1 |
2 |
1 |
+1 |
4 |
3 |
Slovakia |
3 |
1 |
2 |
1 |
3 |
3 |
0 |
4 |
4 |
Ukraine |
3 |
1 |
1 |
1 |
2 |
4 |
-2 |
4 |
Group F
Tuesday, June 18
Saturday, June 22
Wednesday, June 26
Position |
Team |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Portugal |
3 |
2 |
0 |
1 |
5 |
3 |
+2 |
6 |
2 |
Turkey |
3 |
2 |
0 |
1 |
5 |
5 |
0 |
6 |
3 |
Georgia |
3 |
1 |
1 |
1 |
4 |
4 |
0 |
4 |
4 |
Czech Republic |
3 |
0 |
1 |
2 |
3 |
5 |
-2 |
1 |
Third-place ranking
Top four qualify for last-16. Teams level on points will be split via goal-difference, then goals scored and finally on a disciplinary tiebreaker.
Position |
Team |
Group |
P |
W |
D |
L |
GF |
GA |
GD |
Points |
1 |
Netherlands |
D |
3 |
1 |
1 |
1 |
4 |
4 |
0 |
4 |
2 |
Georgia |
F |
3 |
1 |
1 |
1 |
4 |
4 |
0 |
4 |
3 |
Slovakia |
E |
3 |
1 |
1 |
1 |
3 |
3 |
0 |
4 |
4 |
Slovenia |
C |
3 |
0 |
3 |
0 |
2 |
2 |
0 |
3 |
5 |
Hungary |
A |
3 |
1 |
0 |
2 |
2 |
5 |
-3 |
3 |
6 |
Croatia |
B |
3 |
0 |
2 |
1 |
3 |
6 |
-3 |
2 |