|  |  | ||
| Alemania Federal | Dinamarca | España | Italia | 
| 10/6/88 | Dusseldorf | Alemania Federal | 1 | Brehme (56') | 
| Italia | 1 | Mancini (52') | 
Estadio: Rheinstadion
    Arbitro: Keith Hackett (ITA)
    Alemania  Federal: Eike Immel, Thomas Berthold, Guido Buchwald,  Jürgen Kölher, Matthias Herget, Andreas Brehme (76’ Ulrich Borowka), Lotthar  Matthäus, Olaf Thon, Pierre Littbarski, Jürgen Klinsmann, Rudi Völler (82’  Dieter Eckstein). DT. Franz Beckenbauer.
    Italia: Walter Zenga, Giuseppe Bergomi, Franco Baresi, Ricardo  Ferri, Paolo Maldini, Roberto Donadoni, Fernando De Napoli (86’ Luigi De  Agostini), Giuseppe Giannini, Carlo Ancelotti, Roberto Mancini, Gianlucca  Vialli (89’ Alessandro Altobelli). DT. Azeglio Vicini.
| 11/6/88 | Hannover | España | 3 | Michel (5'), Butragueño (53'), Gordillo (66') | 
| Dinamarca | 2 | Laudrup (24'), Poulsen (88') | 
Estadio: AWD Arena
  Arbitro: Albert Thomas (HOL)
  España: Andoni  Zubizarreta, Tomás, Genaro Andrinúa, Antonio Camacho (46’ Soler), Rafael  Gordillo, Michel, Victor, Ricardo Gallego, Rafael Gordillo (77’ Martín Vásquez),  Emilio Butragueño, José Mari Baquero. DT. Luis Suárez.
  Dinamarca: Troles Rasmussen, John  Siveback, Soren Busk, Morten Olsen, Ivan Nielsen (66’ Lars Olsen), Jan Heintze,  Soren Lerby, John Helt (46’ John Jensen), Flemming Povlsen, Michael Laudrup,  Preben Elkjaer-Larsen. DT. Sepp Piontek.
  
| 14/6/88 | Gelsenkirchen | Alemania Federal | 2 | Klinsmann (9'), Thon (87') | 
| Dinamarca | 0 | 
Estadio: Parkstadion
    Arbitro: Bob  Valentine (ESC)
    Alemania  Federal: Eike Immel, Guido Buchwald (33’ Ulrich Borowka),  Jürgen Kölher, Matthias Herget, Andreas Brehme, Lotthar Matthäus, Olaf Thon,  Pierre Littbarski, Wolfgang Rolff, Jürgen Klinsmann, Rudi Völler (75’ Frank  Mill). DT. Franz Beckenbauer.
    Dinamarca: Peter Schmeichel, John Siveback, Ivan Nielsen, Lars  Olsen, Morten Olsen, Jan Heintze, Soren Lerby, Kim Vilfort (73’ Klaus Berggreen),  Flemming Povlsen, Michael Laudrup (63’ John Eriksen), Preben Elkjaer-Larsen.  DT. Sepp Piontek.
| 14/6/88 | Frankfurt | Italia | 1 | Vialli (74') | 
| España | 0 | 
Estadio: Waldstadion
    Arbitro: Keith Hackett (ITA)
    Italia: Walter Zenga, Giuseppe Bergomi, Franco Baresi, Ricardo Ferri, Paolo  Maldini, Roberto Donadoni, Fernando De Napoli, Giuseppe Giannini, Carlo  Ancelotti, Roberto Mancini (68’ Alessandro Altobelli), Gianlucca Vialli (89’ Luigi  De Agostini). DT. Azeglio Vicini. 
    España: Andoni Zubizarreta, Tomás, Genaro Andrinúa,  Manuel Sanchís, Rafael Gordillo, Michel (73’ Aitor Beguiristaín), Victor,  Ricardo Gallego (67’ Martín Vásquez), Soler, Emilio Butragueño, José Mari  Baquero. DT. Luis Suárez.
| 17/6/88 | Munich | Alemania Federal | 2 | Voller (29', 50') | 
| España | 0 | 
Estadio: Olímpico
  Arbitro: Michel Vautrot (FRA) 
  Alemania  Federal: Eike Immel, Ulrich Borowka, Jürgen Kölher, Matthias  Herget, Andreas Brehme, Lotthar Matthäus, Olaf Thon, Pierre Littbarski (63’  Wolfram Wuttke), Wolfgang Rolff, Jürgen Klinsmann (85’ Frank Mill), Rudi  Völler. DT. Franz Beckenbauer.
España: Andoni Zubizarreta, Tomás, Genaro Andrinúa,  Manuel Sanchís, Rafael Gordillo, Antonio Camacho, Victor, Martín Vásquez,  Michel, Emilio Butragueño (51’ Julio Salinas), José Mari Baquero. DT. Luis  Suárez.
| 17/6/88 | Colonia | Italia | 2 | Altobelli (67'), De Agostini (87') | 
| Dinamarca | 0 | 
Estadio: Rhein Energie Stadion 
  Arbitro: Bruno Galler (SUI) 
  Italia: Walter Zenga, Giuseppe  Bergomi, Franco Baresi, Ricardo Ferri, Paolo Maldini, Roberto Donadoni (85’ Luigi  De Agostini), Fernando De Napoli, Giuseppe Giannini, Carlo Ancelotti, Roberto  Mancini (67’ Alessandro Altobelli), Gianlucca Vialli. DT. Azeglio Vicini. 
Dinamarca: Peter  Schmeichel, Ivan Nielsen, Bjorn Kristensen, Lars Olsen, Jan Heintze, Per Frimman  (58’ Kim Vilfort), John Jensen, Morten Olsen (68’ Klaus Berggreen), Michael  Laudrup, John Eriksen, Flemming Provisen. DT. Sepp Piontek. 
| Lugar | PJ | PG | PE | PP | GF | GC | DIF | PTS | |
| 1º | Alemania Federal  | 3 | 2 | 1 | 0 | 5 | 1 | +4 | 5 | 
| 2º | Italia | 3 | 2 | 1 | 0 | 4 | 1 | +3 | 5 | 
| 3º | España | 3 | 1 | 0 | 2 | 3 | 5 | -2 | 2 | 
| 4º | Dinamarca | 3 | 0 | 0 | 3 | 2 | 7 | -5 | 0 | 
|  | |||
| Eire | Holanda | Inglaterra | Union Sovietica | 
| 12/6/88 | Stuttgart | Eire | 1 | Aldridge (6') | 
| Inglaterra | 0 | 
Estadio: Neckarstadion
  Arbitro: Sigfried Kirschen (RDA)
  Eire: Pat Bonner, Chris Morris, Mick McCarthy,  Kevin Moran, Chris Hughton, Ray Houghton, Paul McGrath, Ronnie Whelan, Galvin (77’  Kevin Sheedy), John Aldridge, Frank Stapleton (64’ Niall Quinn). DT. Jack  Charlton.
Inglaterra: Peter Shilton, Gary Stevens, Tony Adams,  Steve Samson, Chris Waddle, Brian Robson, Peter Beardsley (83’ Mark Hateley),  Neil Webb (60’ Glenn Hoddle), Haddley, Gary Lineker, John Barnes. DT. Bobby  Robson.
| 12/6/88 | Colonia | Union Sovietica | 1 | Rats (54') | 
| Holanda | 0 | 
Estadio: Rhein Energie Stadion 
  Arbitro: Dieter Pauly (RFA) 
  Unión Soviética: Rinat  Dassaev, Wladimir Bessonov, Oleg Kuznetsov, Vagiz Khidiatulin, Anatoli  Demianenko, Igor Belanov (82’ Sergei Aleinikov), Alexander Zavarov (90’ Tengiz Sulakvelidze),  Alexei Michailichenko, Gennadi Litovchenko, Oleg Protassov, Vasili Rats. DT.  Valeri Lobanovski.
Holanda: Hans Van  Breukelen, Berry Van Aarle, Ronald Koeman, Adri Van Tiggelen, Jan Wouters,  Frank Rijkaard, Gerald Vannenburg (59’ Marco Van Basten), Ruud Gullit, Johnny  Van’t Schip, John Bosman, Arnold Muhren. DT. Rinus Michels.
| 15/6/88 | Dusseldorf | Holanda | 3 | Van Basten (44', 72', 75') | 
| Inglaterra | 1 | Robson (54') | 
Estadio: Rheinstadion
  Arbitro: Paolo Casoria (ITA)
  Holanda: Hans Van  Breukelen, Berry Van Aarle, Ronald Koeman, Adri Van Tiggelen, Jan Wouters,  Frank Rijkaard, Erwin Koeman, Gerald Vannenburg (58’ Wim Kieft), Marco Van  Basten (87’ Wild Suvrijm), Ruud Gullit, Arnold Muhren. DT. Rinus Michels.
Inglaterra: Peter Shilton, Gary Stevens, Mark Wright,  Tony Adams, Steve Samson, Trevor Steven (69’ Chris Waddle), Brian Robson, Glenn  Hoddle, Peter Beardsley (72’ Marc Hateley), Gary Lineker, John Barnes. DT.  Bobby Robson.
| 15/6/88 | Hannover | Eire | 1 | Whelan (38') | 
| Union Sovietica | 1 | Protassov (77') | 
Estadio: AWD Arena
Arbitro: Soriano Aldren (ESP)
Eire: Pat Bonner, Chris Morris, Mick McCarthy,  Kevin Moran, Chris Hughton, Ray Houghton, Ronnie Whelan, Galvin, Kevin Sheedy,  John Aldridge, Frank Stapleton (81’ Tony Cascarino). DT. Jack Charlton.
    Unión Soviética: Rinat Dassaev (68’ Viktor Chanov), Oleg  Kuznetsov, Vagiz Khidiatulin, Anatoli Demianenko, Igor Belanov, Sergei  Aleinikov, Alexander Zavarov, Sulakvelidze (46’ Sergei Gotsmanov), Alexei  Michailichenko, Oleg Protassov, Vasili Rats. DT. Valeri Lobanovski.
| 18/6/88 | Frankfurt | Union Sovietica | 3 | Aleinikov (2'), Michailichenko (27'), Passulko (71') | 
| Inglaterra | 1 | Adams (15') | 
Estadio: Waldstadion
  Arbitro: José Rosa dos Santos (POR) 
  Unión Soviética: Rinat  Dassaev, Oleg Kuznetsov, Vagiz Khidiatulin, Igor Belanov (46’ Victor Passulko),  Sergei Aleinikov, Alexander Zavarov (86’ Sergei Gotsmanov), Gennadi  Litovchenko, Alexei Michailichenko, Oleg Protassov, Vasili Rats. DT. Valeri Lobanovski.
Inglaterra: Chris Woods, Gary Stevens, Tony Adams, Dave  Watson, Kenny Sansom, Trevor Steven, Brian Robson, Glenn Hoddle, Gary Lineker  (69’ Mark Hateley), Steve MacMahon (53’ Neil Webb), John Barnes. DT. Bobby  Robson.
| 18/6/88 | Gelsenkirchen | Holanda | 1 | Kieft (82') | 
| Eire | 0 | 
Estadio: Parkstadion
  Arbitro: Horst Brummeier (AUT) 
  Holanda: Hans Van  Breukelen, Berry Van Aarle, Ronald Koeman, Adri Van Tiggelen, Jan Wouters,  Frank Rijkaard, Erwin Koeman (51’ Wim Kieft), Gerald Vannenburg, Ruud Gullit,  Arnold Muhren (79’ John Bosman), Marco Van Basten. DT. Rinus Michels.
Eire: Pat Bonner, Chris Morris (46’ Kevin  Sheedy), Mick McCarthy, Kevin Moran, Chris Hughton, Ray Houghton (83’ Tony  Cascarino), Paul McGrath, Ronnie Whelan, Galvin, John Aldridge, Frank  Stapleton. DT. Jack Charlton. 
| Lugar | PJ | PG | PE | PP | GF | GC | DIF | PTS | |
| 1º | Union Sovietica  | 3 | 2 | 1 | 0 | 5 | 2 | +3 | 5 | 
| 2º | Holanda | 3 | 2 | 0 | 1 | 4 | 2 | +2 | 4 | 
| 3º | Eire | 3 | 1 | 1 | 1 | 2 | 2 | 0 | 3 | 
| 4º | Inglaterra | 3 | 0 | 0 | 3 | 2 | 7 | -5 | 0 | 
| 21/6/88 | Hamburgo | Alemania Federal | 1 | Matthaus (55' (P)) | 
| Holanda | 2 | R. Koeman (74' (P)), Van Basten (89') | 
Estadio: Volksparkstadion
  Arbitro: Ion Igna (RUM)
  Alemania  Federal: Ike Immel, Ulrich Borowka, Jürgen Kölher, Matthias  Herget (46’ Hans Pflugler), Andreas Brehme, Lotthar Matthäus, Olaf Thon, Frank  Mill (85’ Pierre Littbarski), Wolfgang Rolff, Jürgen Klinsmann, Rudi Völler.  DT. Franz Beckenbauer.
Holanda: Hans Van Breukelen, Berry Van Aarle, Ronald  Koeman, Adri Van Tiggelen, Jan Wouters, Frank Rijkaard, Erwin Koeman (60’ Wild  Suvrijn), Gerald Vannenburg, Ruud Gullit, Arnold Muhren (60’ Wim Kieft), Marco  Van Basten. DT. Rinus Michels.
| 22/6/88 | Stuttgart | Union Sovietica | 2 | Litovchenko (60'), Protassov (63') | 
| Italia | 0 | 
Estadio: Neckarstadion
  Arbitro: Alexis Ponnet (BEL)
  Unión  Soviética: Rinat Dassaev, Wladimir Bessonov (35’ Anatoli  Demianenko), Oleg Kuznetsov, Vagiz Khidiatulin, Sergei Aleinikov, Alexander  Zavarov, Gotsmanov, Gennadi Litovchenko, Alexei Michailichenko, Oleg Protassov,  Vasili Rats. DT. Valeri Lobanovski.
Italia: Walter Zenga, Giuseppe Bergomi, Franco Baresi, Ricardo Ferri, Paolo  Maldini (64’ Luigi De Agostini), Roberto Donadoni, Fernando De Napoli, Giuseppe  Giannini, Carlo Ancelotti, Roberto Mancini (46’ Alessandro Altobelli),  Gianlucca Vialli. DT. Azeglio Vicini. 
| 25/6/88 | Munich | Holanda | 2 | Gullit (33'), Van Basten (57') | 
| Union Sovietica | 0 | 
Estadio: Olímpico
    Arbitro: Ion Igna (RUM)
    Holanda: Hans Van Breukelen, Berry Van Aarle, Ronald  Koeman, Adri Van Tiggelen, Jan Wouters, Frank Rijkaard, Erwin Koeman, Gerald  Vannenburg, Ruud Gullit, Arnold Muhren, Marco Van Basten. DT. Rinus Michels.
    Unión  Soviética: Rinat Dassaev, Anatoli Demianenko, Vagiz  Khidiatulin, Sergei Aleinikov, Alexander Zavarov, Gotsmanov (68’ Sergei Baltacha),  Gennadi Litovchenko, Alexei Michailichenko, Igor Belanov, Oleg Protassov (71’ Victor  Passulko), Vasili Rats. DT. Valeri Lobanovski.