Topzle Topzle

1994 UEFA Champions League final

Updated: 12/10/2025, 11:04:46 AM Wikipedia source

The 1994 UEFA Champions League final, originally known as the 1994 European Cup final, was a football match between Italian club Milan and Spanish club Barcelona, played on 18 May 1994 at the Olympic Stadium in Athens, Greece. Having won La Liga for the fourth consecutive year, Barcelona were favourites to win a second European Cup/UEFA Champions League title in three years. Milan's preparation before the final was in disarray with injured or suspended talent and other issues. Milan's legendary striker Marco van Basten and their £13 million young sensation Gianluigi Lentini (then the world's most expensive footballer) were both injured, while Franco Baresi and defender Alessandro Costacurta were both suspended. UEFA regulations at the time, which limited teams to fielding a maximum of three non-nationals, meant that Milan coach Fabio Capello was forced to leave out Florin Răducioiu, Jean-Pierre Papin and Brian Laudrup. On Barcelona's side, the rule saw coach Johan Cruyff choosing not to pick Michael Laudrup in his squad for the final, which caused Capello to state after the game "Laudrup was the guy I feared but Cruyff left him out, and that was his mistake". Laudrup left Barcelona for their arch-rival, Real Madrid, at the end of the season. Milan played in their all-white away strip, which historically they use in finals of the European Cup/UEFA Champions League, while Barcelona played in their red and blue strip. Milan dominated early and were rewarded when Dejan Savićević ran down the right flank and passed to Daniele Massaro, who tapped the ball into an empty net. Massaro banged in his second just before half-time to make it 2–0 after a solo run by Roberto Donadoni down the left wing. In the 47th minute, Savićević capitalised on a defensive error by Miguel Ángel Nadal to lob goalkeeper Andoni Zubizarreta for the third goal. Eight minutes later, after Savićević had hit a post and the Barcelona defence had failed to clear, Milan midfielder Marcel Desailly beat the offside trap to make it 4–0, which ended up being the final score. Desailly became the first player to win the trophy in consecutive years with different clubs after winning with Marseille in 1993. The match held the record for the largest margin in a final in the Champions League era until it was surpassed in the 2025 UEFA Champions League final, when French side Paris Saint-Germain beat Inter Milan 5-0 in Munich.

Infobox

Event
1993–94 UEFA Champions League
Milan
Milan Barcelona 4 0
Date
18 May 1994 (1994-05-18)
Venue
Olympic Stadium, Athens
Referee
Philip Don (England)
Attendance
70,000

Tables

· Teams
Milan
Milan
Team
Milan
Previous final appearances (bold indicates winners)
6 (1958, 1963, 1969, 1989, 1990, 1993)
Barcelona
Barcelona
Team
Barcelona
Previous final appearances (bold indicates winners)
3 (1961, 1986, 1992)
Team
Previous final appearances (bold indicates winners)
Milan
6 (1958, 1963, 1969, 1989, 1990, 1993)
Barcelona
3 (1961, 1986, 1992)
· Route to the final
Opponent
Opponent
Milan
Opponent
Milan
Agg.
Milan
1st leg
Milan
2nd leg
Barcelona
Opponent
Barcelona
Agg.
Barcelona
1st leg
Barcelona
2nd leg
Aarau
Aarau
Milan
Aarau
Milan
1–0
Milan
1–0 (A)
Milan
0–0 (H)
Round
First round
Barcelona
Dynamo Kyiv
Barcelona
5–4
Barcelona
1–3 (A)
Barcelona
4–1 (H)
Copenhagen
Copenhagen
Milan
Copenhagen
Milan
7–0
Milan
6–0 (A)
Milan
1–0 (H)
Round
Second round
Barcelona
Austria Wien
Barcelona
5–1
Barcelona
3–0 (H)
Barcelona
2–1 (A)
Opponent
Opponent
Milan
Opponent
Milan
Result
Milan
Group stage
Milan
Opponent
Round
Result
Anderlecht
Anderlecht
Milan
Anderlecht
Milan
0–0 (A)
Milan
Matchday 1
Milan
Galatasaray
Round
0–0 (A)
Porto
Porto
Milan
Porto
Milan
3–0 (H)
Milan
Matchday 2
Milan
Monaco
Round
2–0 (H)
Werder Bremen
Werder Bremen
Milan
Werder Bremen
Milan
2–1 (H)
Milan
Matchday 3
Milan
Spartak Moscow
Round
2–2 (A)
Werder Bremen
Werder Bremen
Milan
Werder Bremen
Milan
1–1 (A)
Milan
Matchday 4
Milan
Spartak Moscow
Round
5–1 (H)
Anderlecht
Anderlecht
Milan
Anderlecht
Milan
0–0 (H)
Milan
Matchday 5
Milan
Galatasaray
Round
3–0 (H)
Porto
Porto
Milan
Porto
Milan
0–0 (A)
Milan
Matchday 6
Milan
Monaco
Round
1–0 (A)
Group B winner .mw- .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte Pld Pts 1 Milan 6 8 2 Porto 6 7 3 Werder Bremen 6 5 4 Anderlecht 6 4 Source: UEFA
Group B winner .mw- .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte Pld Pts 1 Milan 6 8 2 Porto 6 7 3 Werder Bremen 6 5 4 Anderlecht 6 4 Source: UEFA
Milan
Group B winner .mw- .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte Pld Pts 1 Milan 6 8 2 Porto 6 7 3 Werder Bremen 6 5 4 Anderlecht 6 4 Source: UEFA
Milan
Final standings
Milan
Group A winner Pos Teamvte Pld Pts 1 Barcelona 6 10 2 Monaco 6 7 3 Spartak Moscow 6 5 4 Galatasaray 6 2 Source: UEFA
Opponent
Opponent
Milan
Opponent
Milan
Result
Milan
Knockout phase
Milan
Opponent
Round
Result
Monaco
Monaco
Milan
Monaco
Milan
3–0 (H)
Milan
Semi-finals
Milan
Porto
Round
3–0 (H)
Milan
Round
Barcelona
Opponent
Agg.
1st leg
2nd leg
Opponent
Agg.
1st leg
2nd leg
Aarau
1–0
1–0 (A)
0–0 (H)
First round
Dynamo Kyiv
5–4
1–3 (A)
4–1 (H)
Copenhagen
7–0
6–0 (A)
1–0 (H)
Second round
Austria Wien
5–1
3–0 (H)
2–1 (A)
Opponent
Result
Group stage
Opponent
Result
Anderlecht
0–0 (A)
Matchday 1
Galatasaray
0–0 (A)
Porto
3–0 (H)
Matchday 2
Monaco
2–0 (H)
Werder Bremen
2–1 (H)
Matchday 3
Spartak Moscow
2–2 (A)
Werder Bremen
1–1 (A)
Matchday 4
Spartak Moscow
5–1 (H)
Anderlecht
0–0 (H)
Matchday 5
Galatasaray
3–0 (H)
Porto
0–0 (A)
Matchday 6
Monaco
1–0 (A)
Group B winner .mw- hlist.inline,.mw-parser-output inline dl,.mw-parser-output inline ol,.mw-parser-output inline ul,.mw-parser-output dl dl,.mw-parser-output dl ol,.mw-parser-output dl ul,.mw-parser-output ol dl,.mw-parser-output ol ol,.mw- .mw- hlist dd:last-child ,.mw- hlist dd dd:first-child ,.mw-parser-output dd dt:first-child ,.mw-parser-output dd li:first-child ,.mw-parser-output dt dd:first-child ,.mw-parser-output dt dt:first-child ,.mw-parser-output dt li:first-child ,.mw-parser-output li dd:first-child ,.mw- hlist dd dd:last-child ,.mw-parser-output dd dt:last-child ,.mw-parser-output dd li:last-child ,.mw-parser-output dt dd:last-child ,.mw-parser-output dt dt:last-child ,.mw-parser-output dt li:last-child ,.mw-parser-output li dd:last-child ,.mw- .mw- hlist dd ol>li:first-child ,.mw- .mw- .mw- .mw- .mw- .mw- } }vte Pld Pts 1 Milan 6 8 2 Porto 6 7 3 Werder Bremen 6 5 4 Anderlecht 6 4 Source: UEFA
PosTeam hlist.inline,.mw-parser-output inline dl,.mw-parser-output inline ol,.mw-parser-output inline ul,.mw-parser-output dl dl,.mw-parser-output dl ol,.mw-parser-output dl ul,.mw-parser-output ol dl,.mw-parser-output ol ol,.mw- .mw- hlist dd:last-child ,.mw- hlist dd dd:first-child ,.mw-parser-output dd dt:first-child ,.mw-parser-output dd li:first-child ,.mw-parser-output dt dd:first-child ,.mw-parser-output dt dt:first-child ,.mw-parser-output dt li:first-child ,.mw-parser-output li dd:first-child ,.mw- hlist dd dd:last-child ,.mw-parser-output dd dt:last-child ,.mw-parser-output dd li:last-child ,.mw-parser-output dt dd:last-child ,.mw-parser-output dt dt:last-child ,.mw-parser-output dt li:last-child ,.mw-parser-output li dd:last-child ,.mw- .mw- hlist dd ol>li:first-child ,.mw- .mw- .mw- .mw- .mw- .mw- } }vtePldPts
1Milan68
2Porto67
3Werder Bremen65
4Anderlecht64
Final standings
Group A winner Pos Teamvte Pld Pts 1 Barcelona 6 10 2 Monaco 6 7 3 Spartak Moscow 6 5 4 Galatasaray 6 2 Source: UEFA
PosTeamvtePldPts
1Barcelona610
2Monaco67
3Spartak Moscow65
4Galatasaray62
Opponent
Result
Knockout phase
Opponent
Result
Monaco
3–0 (H)
Semi-finals
Porto
3–0 (H)
1
1
Pos
1
Team .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte
Milan
Pld
6
Pts
8
2
2
Pos
2
Team .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte
Porto
Pld
6
Pts
7
3
3
Pos
3
Team .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte
Werder Bremen
Pld
6
Pts
5
4
4
Pos
4
Team .mw- .mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd:last-child::after,.mw- .mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw- .mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw- .mw- .mw- .mw- .mw-parser-output .hlist dd ol>li:first-child::before,.mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- .mw- } }vte
Anderlecht
Pld
6
Pts
4
Pos
Team hlist.inline,.mw-parser-output inline dl,.mw-parser-output inline ol,.mw-parser-output inline ul,.mw-parser-output dl dl,.mw-parser-output dl ol,.mw-parser-output dl ul,.mw-parser-output ol dl,.mw-parser-output ol ol,.mw- .mw- hlist dd:last-child ,.mw- hlist dd dd:first-child ,.mw-parser-output dd dt:first-child ,.mw-parser-output dd li:first-child ,.mw-parser-output dt dd:first-child ,.mw-parser-output dt dt:first-child ,.mw-parser-output dt li:first-child ,.mw-parser-output li dd:first-child ,.mw- hlist dd dd:last-child ,.mw-parser-output dd dt:last-child ,.mw-parser-output dd li:last-child ,.mw-parser-output dt dd:last-child ,.mw-parser-output dt dt:last-child ,.mw-parser-output dt li:last-child ,.mw-parser-output li dd:last-child ,.mw- .mw- hlist dd ol>li:first-child ,.mw- .mw- .mw- .mw- .mw- .mw- } }vte
Pld
Pts
1
Milan
6
8
2
Porto
6
7
3
Werder Bremen
6
5
4
Anderlecht
6
4
1
1
Pos
1
Teamvte
Barcelona
Pld
6
Pts
10
2
2
Pos
2
Teamvte
Monaco
Pld
6
Pts
7
3
3
Pos
3
Teamvte
Spartak Moscow
Pld
6
Pts
5
4
4
Pos
4
Teamvte
Galatasaray
Pld
6
Pts
2
Pos
Teamvte
Pld
Pts
1
Barcelona
6
10
2
Monaco
6
7
3
Spartak Moscow
6
5
4
Galatasaray
6
2
Image
Source:
Tip: Wheel or +/− to zoom, drag to pan, Esc to close.