| 1ª jornada |
| 08 de Junho |
| GRUPO A |
|
Polónia |
 |
1 - 1 |
 |
Grécia |
| Árbitro: Carlos Velasco Carballo – Estádio: Estádio Nacional |
| GRUPO A |
|
Rússia |
 |
4 - 1 |
 |
Rep. Checa |
| Árbitro: Howard Webb – Estádio: Estádio Miejski (Wroclaw) |
| 09 de Junho |
| GRUPO B |
|
Holanda |
 |
0 - 1 |
 |
Dinamarca |
| Árbitro: Damir Skomina – Estádio: Estádio Metalist |
| GRUPO B |
|
Alemanha |
 |
1 - 0 |
 |
Portugal |
| Árbitro: Stéphane Lannoy – Estádio: Arena Lviv |
| 10 de Junho |
| GRUPO C |
|
Espanha |
 |
1 - 1 |
 |
Itália |
| Árbitro: Viktor Kassai – Estádio: Arena PGE |
| GRUPO C |
|
Rep. Irlanda |
 |
1 - 3 |
 |
Croácia |
| Árbitro: Bjorn Kuipers – Estádio: Estádio Miejski (Poznan) |
| 11 de Junho |
| GRUPO D |
|
França |
 |
1 - 1 |
 |
Inglaterra |
| Árbitro: Nicola Rizzoli – Estádio: Arena Donbass |
| GRUPO D |
|
Ucrânia |
 |
2 - 1 |
 |
Suécia |
| Árbitro: Cüneyt Çakir – Estádio: Estádio Olímpico de Kiev |
| 2ª jornada |
| 12 de Junho |
| GRUPO A |
|
Grécia |
 |
1 - 2 |
 |
Rep. Checa |
| Árbitro: Stéphane Lannoy – Estádio: Estádio Miejski (Wroclaw) |
| GRUPO A |
|
Polónia |
 |
1 - 1 |
 |
Rússia |
| Árbitro: Wolfgang Stark – Estádio: Estádio Nacional |
| 13 de Junho |
| GRUPO B |
|
Dinamarca |
 |
2 - 3 |
 |
Portugal |
| Árbitro: Craig Thomson – Estádio: Arena Lviv |
| GRUPO B |
|
Holanda |
 |
1 - 2 |
 |
Alemanha |
| Árbitro: Jonas Eriksson – Estádio: Estádio Metalist |
| 14 de Junho |
| GRUPO C |
|
Itália |
 |
1 - 1 |
 |
Croácia |
| Árbitro: Howard Webb – Estádio: Estádio Miejski (Poznan) |
| GRUPO C |
|
Espanha |
 |
4 - 0 |
 |
Rep. Irlanda |
| Árbitro: Pedro Proença – Estádio: Arena PGE |
| 15 de Junho |
| GRUPO D |
|
Suécia |
 |
2 - 3 |
 |
Inglaterra |
| Árbitro: Damir Skomina – Estádio: Estádio Olímpico de Kiev |
| GRUPO D |
|
Ucrânia |
 |
0 - 2 |
 |
França |
| Árbitro: Bjorn Kuipers – Estádio: Arena Donbass |
| 3ª jornada |
| 16 de Junho |
| GRUPO A |
|
Grécia |
 |
1 - 0 |
 |
Rússia |
| Árbitro: Jonas Eriksson – Estádio: Estádio Nacional |
| GRUPO A |
|
Rep. Checa |
 |
1 - 0 |
 |
Polónia |
| Árbitro: Craig Thomson – Estádio: Estádio Miejski (Wroclaw) |
| 17 de Junho |
| GRUPO B |
|
Portugal |
 |
2 - 1 |
 |
Holanda |
| Árbitro: Nicola Rizzoli – Estádio: Estádio Metalist |
| GRUPO B |
|
Dinamarca |
 |
1 - 2 |
 |
Alemanha |
| Árbitro: Carlos Velasco Carballo – Estádio: Arena Lviv |
| 18 de Junho |
| GRUPO C |
|
Croácia |
 |
0 - 1 |
 |
Espanha |
| Árbitro: Wolfgang Stark – Estádio: Arena PGE |
| GRUPO C |
|
Itália |
 |
2 - 0 |
 |
Rep. Irlanda |
| Árbitro: Cüneyt Çakir – Estádio: Estádio Miejski (Poznan) |
| 19 de Junho |
| GRUPO D |
|
Suécia |
 |
2 - 0 |
 |
França |
| Árbitro: Pedro Proença – Estádio: Estádio Olímpico de Kiev |
| GRUPO D |
|
Inglaterra |
 |
1 - 0 |
 |
Ucrânia |
| Árbitro: Viktor Kassai – Estádio: Arena Donbass |
| Quartos-de-Final |
| 21 de Junho |
| |
|
Rep. Checa |
 |
0 - 1 |
 |
Portugal |
|
| Árbitro: Howard Webb – Estádio: Estádio Nacional |
| 22 de Junho |
| |
|
Alemanha |
 |
4 - 2 |
 |
Grécia |
|
| Árbitro: Damir Skomina – Estádio: Arena PGE |
| 23 de Junho |
| |
|
Espanha |
 |
2 - 0 |
 |
França |
|
| Árbitro: Nicola Rizzoli – Estádio: Arena Donbass |
| 24 de Junho |
| |
|
Inglaterra |
 |
0 - 0 |
 |
Itália |
|
| Árbitro: Pedro Proença – Estádio: Estádio Olímpico de Kiev |
| Meias-Finais |
| 27 de Junho |
| |
|
Portugal |
 |
0 - 0 |
 |
Espanha |
|
| Árbitro: Cüneyt Çakir – Estádio: Arena Donbass |
| 28 de Junho |
| |
|
Alemanha |
 |
1 - 2 |
 |
Itália |
|
| Árbitro: Stéphane Lannoy – Estádio: Estádio Nacional |
| Final |
| 01 de Julho |
| |
|
Espanha |
 |
4 - 0 |
 |
Itália |
|
| Árbitro: Pedro Proença – Estádio: Estádio Olímpico de Kiev |