| Tournament details | |
|---|---|
| Dates | 10 August 1988 – 10 May 1989 | 
| Teams | 32 (first round) 33 (qualifying) | 
| Final positions | |
| Champions |  Barcelona (3rd title) | 
| Runners-up |  Sampdoria | 
| Tournament statistics | |
| Matches played | 63 | 
| Goals scored | 152 (2.41 per match) | 
| Attendance | 917,269 (14,560 per match) | 
| Top scorer(s) | Hristo Stoichkov (Sredets Sofia) 7 goals | 
The 1988–89 season of the European Cup Winners' Cup was won for the third time by Barcelona in the final against Italian entrants Sampdoria. The two sides would meet again in the 1992 European Cup Final, which Barcelona also won. Wimbledon did not participate due to UEFA's five-year ban on English clubs from European competition. The defending champions Mechelen were eliminated in the semi-finals by eventual runners-up Sampdoria.
Preliminary round
| Team 1 | Agg. | Team 2 | 1st leg | 2nd leg | 
|---|---|---|---|---|
| Békéscsabai  | 4–2 |  Bryne | 3–0 | 1–2 | 
First leg
| Békéscsabai  | 3–0 |  Bryne | 
|---|---|---|
| Gruborovics  4', 10' Csató  37' | Report | 
Second leg
Békéscsabai won 4–2 on aggregate.
First round
| Team 1 | Agg. | Team 2 | 1st leg | 2nd leg | 
|---|---|---|---|---|
| Derry City  | 0–4 |  Cardiff City | 0–0 | 0–4 | 
| Glenavon .svg.png.webp) | 2–7 |  AGF | 1–4 | 1–3 | 
| Fram  | 0–7 |  Barcelona | 0–2 | 0–5 | 
| Flamurtari Vlorë .svg.png.webp) | 2–4 |  Lech Poznań | 2–3 | 0–1 | 
| Internacionál Bratislava  | 2–8 | .svg.png.webp) Sredets Sofia | 2–3 | 0–5 | 
| Omonia .svg.png.webp) | 0–3 |  Panathinaikos | 0–1 | 0–2 | 
| Roda JC  | 2–1 |  Vitória de Guimarães | 2–0 | 0–1 | 
| Borac Banja Luka .svg.png.webp) | 2–4 |  Metalist Kharkiv | 2–0 | 0–4 | 
| Grasshopper .svg.png.webp) | 0–1 |  Eintracht Frankfurt | 0–0 | 0–1 | 
| Sakaryaspor  | 2–1 |  Békéscsabai | 2–0 | 0–1 | 
| Mechelen .svg.png.webp) | 8–1 |  Avenir Beggen | 5–0 | 3–1 | 
| Metz  | 1–5 | .svg.png.webp) Anderlecht | 1–3 | 0–2 | 
| Floriana  | 0–1 |  Dundee United | 0–0 | 0–1 | 
| Dinamo București .svg.png.webp) | 6–0 |  Kuusysi Lahti | 3–0 | 3–0 | 
| Carl Zeiss Jena  | 5–1 |  Kremser SC | 5–0 | 0–1 | 
| IFK Norrköping  | 2–3 |  Sampdoria | 2–1 | 0–2 | 
First leg
| Omonia .svg.png.webp) | 0–1 |  Panathinaikos | 
|---|---|---|
| Report | Mavridis  13' | 
| Flamurtari Vlorë .svg.png.webp) | 2–3 |  Lech Poznań | 
|---|---|---|
| V. Ruci  40', 76' | Report | Łukasik  32' Araszkiewicz  67' Głombiowski  89' | 
| Internacionál Bratislava  | 2–3 | .svg.png.webp) Sredets Sofia | 
|---|---|---|
| Moravec  45' Weiss  58' (pen.) | Report | Penev  36', 39' (pen.), 78' | 
| Roda JC  | 2–0 |  Vitória de Guimarães | 
|---|---|---|
| Nando  65' (o.g.) Van Loen  87' | Report | 
| Borac Banja Luka .svg.png.webp) | 2–0 |  Metalist Kharkiv | 
|---|---|---|
| Lemić  43' Lipovac  85' (pen.) | Report | 
| Sakaryaspor  | 2–0 |  Békéscsabai | 
|---|---|---|
| Pešić  35' Yücel  50' | Report | 
| Dinamo București .svg.png.webp) | 3–0 |  Kuusysi Lahti | 
|---|---|---|
| Jäntti  12' (o.g.) Andone  72' Vaișcovici  74' | Report | 
| Carl Zeiss Jena  | 5–0 |  Kremser SC | 
|---|---|---|
| Weber  19' Sträßer  48', 67' Merkel  53' Ludwig  78' | Report | 
Second leg
Mechelen won 8–1 on aggregate.
| Eintracht Frankfurt  | 1–0 | .svg.png.webp) Grasshopper | 
|---|---|---|
| Bakalorz  32' | Report | 
Eintracht Frankfurt won 1–0 on aggregate.
| Cardiff City  | 4–0 |  Derry City | 
|---|---|---|
| McDermott  20' Gilligan  47', 65', 76' | Report | 
Cardiff City won 4–0 on aggregate.
AGF won 7–2 on aggregate.
Barcelona won 7–0 on aggregate.
Lech Poznań won 4–2 on aggregate.
| Sredets Sofia .svg.png.webp) | 5–0 |  Internacionál Bratislava | 
|---|---|---|
| Penev  1' Stoichkov  3' Kostadinov  13', 38' Getov  21' | Report | 
Sredets Sofia won 8–2 on aggregate.
| Panathinaikos  | 2–0 | .svg.png.webp) Omonia | 
|---|---|---|
| Dimopoulos  56' Nielsen  59' | Report | 
Panathinaikos won 3–0 on aggregate.
| Vitória de Guimarães  | 1–0 |  Roda JC | 
|---|---|---|
| Roldão  27' | Report | 
Roda JC won 2–1 on aggregate.
| Metalist Kharkiv  | 4–0 | .svg.png.webp) Borac Banja Luka | 
|---|---|---|
| Tarasov  25', 62' Adzhoyev  78' (pen.) Yesipov  88' | Report | 
Metalist Kharkiv won 4–2 on aggregate.
| Békéscsabai  | 1–0 |  Sakaryaspor | 
|---|---|---|
| Selçuk  49' (o.g.) | Report | 
Sakaryaspor won 2–1 on aggregate.
| Anderlecht .svg.png.webp) | 2–0 |  Metz | 
|---|---|---|
| Krnčević  47' Van Tiggelen  73' (pen.) | Report | 
Anderlecht won 5–1 on aggregate.
| Dundee United  | 1–0 |  Floriana | 
|---|---|---|
| Meade  69' | Report | 
Dundee United won 1–0 on aggregate.
| Kuusysi Lahti  | 0–3 | .svg.png.webp) Dinamo București | 
|---|---|---|
| Report | Vaișcovici  11' (pen.) Kousa  34' (o.g.) Răducioiu  71' (pen.) | 
Dinamo București won 6–0 on aggregate.
| Kremser SC  | 1–0 |  Carl Zeiss Jena | 
|---|---|---|
| Studeny  27' | Report | 
Carl Zeiss Jena won 5–1 on aggregate.
| Sampdoria  | 2–0 |  IFK Norrköping | 
|---|---|---|
| Salsano  37' Vialli  82' | Report | 
Sampdoria won 3–2 on aggregate.
Second round
| Team 1 | Agg. | Team 2 | 1st leg | 2nd leg | 
|---|---|---|---|---|
| Cardiff City  | 1–6 |  AGF | 1–2 | 0–4 | 
| Barcelona  | 2–2 (5–4 p) |  Lech Poznań | 1–1 | 1–1 (aet) | 
| Sredets Sofia .svg.png.webp) | 3–0 |  Panathinaikos | 2–0 | 1–0 | 
| Roda JC  | 1–0 |  Metalist Kharkiv | 1–0 | 0–0 | 
| Eintracht Frankfurt  | 6–1 |  Sakaryaspor | 3–1 | 3–0 | 
| Mechelen .svg.png.webp) | 3–0 | .svg.png.webp) Anderlecht | 1–0 | 2–0 | 
| Dundee United  | 1–2 | .svg.png.webp) Dinamo București | 0–1 | 1–1 | 
| Carl Zeiss Jena  | 2–4 |  Sampdoria | 1–1 | 1–3 | 
First leg
| Cardiff City  | 1–2 |  AGF | 
|---|---|---|
| Gilligan  42' | Report | Kristensen  8', 73' | 
| Sredets Sofia .svg.png.webp) | 2–0 |  Panathinaikos | 
|---|---|---|
| Stoichkov  45' Penev  90' (pen.) | Report | 
| Roda JC  | 1–0 |  Metalist Kharkiv | 
|---|---|---|
| Van der Luer  43' | Report | 
| Eintracht Frankfurt  | 3–1 |  Sakaryaspor | 
|---|---|---|
| Sievers  9' Balzis  31' Studer  43' | Report | Kemal  85' (pen.) | 
| Mechelen .svg.png.webp) | 1–0 | .svg.png.webp) Anderlecht | 
|---|---|---|
| Wilmots  88' | Report | 
| Dundee United  | 0–1 | .svg.png.webp) Dinamo București | 
|---|---|---|
| Report | Mateuț  89' | 
Second leg
AGF won 6–1 on aggregate.
| Lech Poznań  | 1–1 (a.e.t.) |  Barcelona | 
|---|---|---|
| Kruszczyński  28' (pen.) | Report | Roberto  37' | 
| Penalties | ||
| Kruszczyński   Jakołcewicz   Rzepka   Araszkiewicz   Pachelski   Głombiowski   Łukasik  | 4–5 |  Roberto  Begiristain  Valverde  Eusebio  Alexanko  Bakero  Aloísio | 
2–2 on aggregate; Barcelona won 5–4 on penalties.
| Panathinaikos  | 0–1 | .svg.png.webp) Sredets Sofia | 
|---|---|---|
| Report | Penev  85' (pen.) | 
Sredets Sofia won 3–0 on aggregate.
Roda JC won 1–0 on aggregate.
| Sakaryaspor  | 0–3 |  Eintracht Frankfurt | 
|---|---|---|
| Report | Sievers  5' Binz  35' Schulz  65' | 
Eintracht Frankfurt won 6–1 on aggregate.
| Anderlecht .svg.png.webp) | 0–2 | .svg.png.webp) Mechelen | 
|---|---|---|
| Report | Koeman  17' Ohana  46' | 
Mechelen won 3–0 on aggregate.
| Dinamo București .svg.png.webp) | 1–1 |  Dundee United | 
|---|---|---|
| Mateuț  82' | Report | Beaumont  79' | 
Dinamo București won 2–1 on aggregate.
| Sampdoria  | 3–1 |  Carl Zeiss Jena | 
|---|---|---|
| Vierchowod  25' Toninho Cerezo  43' Vialli  53' | Report | Raab  59' | 
Sampdoria won 4–2 on aggregate.
Quarter-finals
| Team 1 | Agg. | Team 2 | 1st leg | 2nd leg | 
|---|---|---|---|---|
| AGF  | 0–1 |  Barcelona | 0–1 | 0–0 | 
| Sredets Sofia .svg.png.webp) | 3–3 (4–3 p) |  Roda JC | 2–1 | 1–2 (aet) | 
| Eintracht Frankfurt  | 0–1 | .svg.png.webp) Mechelen | 0–0 | 0–1 | 
| Dinamo București .svg.png.webp) | 1–1 (a) |  Sampdoria | 1–1 | 0–0 | 
First leg
| Sredets Sofia .svg.png.webp) | 2–1 |  Roda JC | 
|---|---|---|
| Stoichkov  12' Kostadinov  65' | Report | Boerebach  83' | 
| Dinamo București .svg.png.webp) | 1–1 |  Sampdoria | 
|---|---|---|
| Vaișcovici  16' (pen.) | Report | Vialli  90' | 
Second leg
Barcelona won 1–0 on aggregate.
| Roda JC  | 2–1 (a.e.t.) | .svg.png.webp) Sredets Sofia | 
|---|---|---|
| Haan  38' Van der Luer  50' | Report | Stoichkov  78' | 
| Penalties | ||
| Van der Luer   Hanssen   Groenendijk   Haan   Boerebach  | 3–4 |  Penev  Georgiev  Ivanov  Mladenov  Stoichkov | 
3–3 on aggregate; Sredets Sofia won 4–3 on penalties.
| Mechelen .svg.png.webp) | 1–0 |  Eintracht Frankfurt | 
|---|---|---|
| Wilmots  67' | Report | 
Mechelen won 1–0 on aggregate.
1–1 on aggregate; Sampdoria won on away goals.
Semi-finals
| Team 1 | Agg. | Team 2 | 1st leg | 2nd leg | 
|---|---|---|---|---|
| Barcelona  | 6–3 | .svg.png.webp) Sredets Sofia | 4–2 | 2–1 | 
| Mechelen .svg.png.webp) | 2–4 |  Sampdoria | 2–1 | 0–3 | 
First leg
| Barcelona  | 4–2 | .svg.png.webp) Sredets Sofia | 
|---|---|---|
| Lineker  36' Amor  37' Bakero  48' Salinas  72' | Report | Stoichkov  24', 67' (pen.) | 
Second leg
Barcelona won 6–3 on aggregate.
Sampdoria won 4–2 on aggregate.
Final
| Barcelona  | 2–0 |  Sampdoria | 
|---|---|---|
| Salinas  4' López Rekarte  79' | Report | 
Top scorers
| Rank | Name | Team | Goals | 
|---|---|---|---|
| 1 | .svg.png.webp) Hristo Stoichkov | .svg.png.webp) Sredets Sofia | 7 | 
| 2 | .svg.png.webp) Lyuboslav Penev | .svg.png.webp) Sredets Sofia | 6 | 
| 3 |  Roberto |  Barcelona | 5 | 
|  Gianluca Vialli |  Sampdoria | 5 | |
| 5 |  Jimmy Gilligan |  Cardiff City | 4 | 
|  Gary Lineker |  Barcelona | 4 | |
|  Frank Pingel |  AGF | 4 | |
| .svg.png.webp) Claudiu Vaișcovici | .svg.png.webp) Dinamo București | 4 | |
| 9 |  John Bosman | .svg.png.webp) Mechelen | 3 | 
| .svg.png.webp) Emil Kostadinov | .svg.png.webp) Sredets Sofia | 3 | |
|  Bjørn Kristensen |  AGF | 3 | |
| .svg.png.webp) Eddie Krnčević | .svg.png.webp) Anderlecht | 3 | |
|  Eli Ohana | .svg.png.webp) Mechelen | 3 |