1986 / México 1978 / Argentina
Primera ronda | |||
| Grupo 1 | |||
| Italia | 0 | 0 | Polonia |
| 14 de Junio / Balaidos / Árbitro: Michel Vautrot | |||
| Perú | 0 | 0 | Camerún |
| 15 de Junio / Estadio de Riazor / Árbitro: Franz Wohrer | |||
| Italia | 1 | 1 | Perú |
| 18 de Junio / Balaidos / Árbitro: Walter Eschweiler | |||
| Polonia | 0 | 0 | Camerún |
| 19 de Junio / Estadio de Riazor / Árbitro: Alexis Ponnet | |||
| Polonia | 5 | 1 | Perú |
| 22 de Junio / Estadio de Riazor / Árbitro: Mario Rubio Vazquez | |||
| Italia | 1 | 1 | Camerún |
| 23 de Junio / Balaidos / Árbitro: Bogdan Dotchev | |||
| Grupo 2 | |||
| Alemania Occidental | 1 | 2 | Argelia |
| 16 de Junio / El Molinon / Árbitro: Enrique Labo Revoredo | |||
| Chile | 0 | 1 | Austria |
| 17 de Junio / Estadio Carlos Tartiere / Árbitro: Juan Daniel Cardellino | |||
| Alemania Occidental | 4 | 1 | Chile |
| 20 de Junio / El Molinon / Árbitro: Bruno Galler | |||
| Argelia | 0 | 2 | Austria |
| 21 de Junio / Estadio Carlos Tartiere / Árbitro: Tony Boskovic | |||
| Argelia | 3 | 2 | Chile |
| 24 de Junio / Estadio Carlos Tartiere / Árbitro: Romulo Mendez | |||
| Alemania Occidental | 1 | 0 | Austria |
| 25 de Junio / El Molinon / Árbitro: Bob Valentine | |||
| Grupo 3 | |||
| Argentina | 0 | 1 | Bélgica |
| 13 de Junio / Camp Nou / Árbitro: Vojtech Christov | |||
| Hungría | 10 | 1 | El Salvador |
| 15 de Junio / Nuevo Estadio / Árbitro: Elche | |||
| Argentina | 4 | 1 | Hungría |
| 18 de Junio / Estadio Jose Rico Perez / Árbitro: Belaid Lacarne | |||
| Bélgica | 1 | 0 | El Salvador |
| 19 de Junio / Nuevo Estadio / Árbitro: Elche | |||
| Bélgica | 1 | 1 | Hungría |
| 22 de Junio / Nuevo Estadio / Árbitro: Elche | |||
| Argentina | 2 | 0 | El Salvador |
| 23 de Junio / Estadio Jose Rico Perez / Árbitro: Luis Barrancos | |||
| Grupo 4 | |||
| Inglaterra | 3 | 1 | Francia |
| 16 de Junio / Estadio San Mames / Árbitro: Antonio Garrido | |||
| Checoslovaquia | 1 | 1 | Kuwait |
| 17 de Junio / Estadio Jose Zorrilla / Árbitro: Benjamin Dwomoh | |||
| Inglaterra | 2 | 0 | Checoslovaquia |
| 20 de Junio / Estadio San Mames / Árbitro: Charles Corver | |||
| Francia | 4 | 1 | Kuwait |
| 21 de Junio / Estadio Jose Zorrilla / Árbitro: Miroslav Stupar | |||
| Francia | 1 | 1 | Checoslovaquia |
| 24 de Junio / Estadio Jose Zorrilla / Árbitro: Paolo Casarin | |||
| Inglaterra | 1 | 0 | Kuwait |
| 25 de Junio / Estadio San Mames / Árbitro: Gilberto Aristizabal | |||
| Grupo 5 | |||
| España | 1 | 1 | Honduras |
| 16 de Junio / Estadio Luis Casanova / Árbitro: Arturo Ithurralde | |||
| Yugoslavia | 0 | 0 | Irlanda del Norte |
| 17 de Junio / La Romareda / Árbitro: Erik Fredriksson | |||
| España | 2 | 1 | Yugoslavia |
| 20 de Junio / Estadio Luis Casanova / Árbitro: Henning Lund-Sorensen | |||
| Honduras | 1 | 1 | Irlanda del Norte |
| 21 de Junio / La Romareda / Árbitro: Chan Tam Sun | |||
| Honduras | 0 | 1 | Yugoslavia |
| 24 de Junio / La Romareda / Árbitro: Gaston Castro | |||
| España | 0 | 1 | Irlanda del Norte |
| 25 de Junio / Estadio Luis Casanova / Árbitro: Hector Ortiz | |||
| Grupo 6 | |||
| Brasil | 2 | 1 | Unión Soviética |
| 14 de Junio / Estadio Ramon Sanchez Pizjuan / Árbitro: Augusto Lamo Castillo | |||
| Escocia | 5 | 2 | Nueva Zelanda |
| 15 de Junio / Estadio La Rosaleda / Árbitro: David Socha | |||
| Brasil | 4 | 1 | Escocia |
| 18 de Junio / Estadio Benito Villamarin / Árbitro: Luis Paulino Siles | |||
| Unión Soviética | 3 | 0 | Nueva Zelanda |
| 19 de Junio / Estadio La Rosaleda / Árbitro: Yousef El-Ghoul | |||
| Unión Soviética | 2 | 2 | Escocia |
| 22 de Junio / Estadio La Rosaleda / Árbitro: Nicolae Rainea | |||
| Brasil | 4 | 0 | Nueva Zelanda |
| 23 de Junio / Estadio Benito Villamarin / Árbitro: Damir Matovinovic | |||
Segunda ronda | |||
| Grupo A | |||
| Polonia | 3 | 0 | Bélgica |
| 28 de Junio / Camp Nou / Árbitro: Luis Paulino Siles | |||
| Bélgica | 0 | 1 | Unión Soviética |
| 01 de Julio / Camp Nou / Árbitro: Michel Vautrot | |||
| Unión Soviética | 0 | 0 | Polonia |
| 04 de Julio / Camp Nou / Árbitro: Bob Valentine | |||
| Grupo B | |||
| Alemania Occidental | 0 | 0 | Inglaterra |
| 29 de Junio / Estadio Santiago Bernabeu / Árbitro: Arnaldo Cezar Coelho | |||
| Alemania Occidental | 2 | 1 | España |
| 02 de Julio / Estadio Santiago Bernabeu / Árbitro: Paolo Casarin | |||
| España | 0 | 0 | Inglaterra |
| 05 de Julio / Estadio Santiago Bernabeu / Árbitro: Alexis Ponnet | |||
| Grupo C | |||
| Italia | 2 | 1 | Argentina |
| 29 de Junio / Estadio Sarria / Árbitro: Nicolae Rainea | |||
| Argentina | 1 | 3 | Brasil |
| 02 de Julio / Estadio Sarria / Árbitro: Mario Rubio Vazquez | |||
| Italia | 3 | 2 | Brasil |
| 05 de Julio / Estadio Sarria / Árbitro: Abraham Klein | |||
| Grupo D | |||
| Austria | 0 | 1 | Francia |
| 28 de Junio / Estadio Vicente Calderon / Árbitro: Karoly Palotai | |||
| Austria | 2 | 2 | Irlanda del Norte |
| 01 de Julio / Estadio Vicente Calderon / Árbitro: Adolf Prokop | |||
| Irlanda del Norte | 1 | 4 | Francia |
| 04 de Julio / Estadio Vicente Calderon / Árbitro: Alojzy Jarguz | |||
Semifinal | |||
| Polonia | 0 | 2 | Italia |
| 08 de Julio / Camp Nou / Árbitro: Juan Daniel Cardellino | |||
| Alemania Occidental | 3 | 3 | Francia |
|
Tiempo extra 08 de Julio / Estadio Ramon Sanchez Pizjuan / Árbitro: Charles Corver |
|||
Tercer puesto | |||
| Polonia | 3 | 2 | Francia |
| 10 de Julio / Estadio Jose Rico Perez / Árbitro: Antonio Garrido | |||
Final | |||
| Italia | 3 | 1 | Alemania Occidental |
| 11 de Julio / Estadio Santiago Bernabeu / Árbitro: Arnaldo Cezar Coelho | |||