| List of African Cup of Champions Clubs finals (1964–1996)
|
| Single match format
|
| Year
|
Winner
|
Score
|
Runner-up
|
Venue
|
Attendance
|
| Nation
|
Club
|
Club
|
Nation
|
| 1964–65
|
Cameroon
|
Oryx Douala
|
2–1
|
Stade Malien
|
Mali
|
Accra Stadium, Accra
|
30,000
|
| Two-legged format
|
| Season
|
Home
|
Score
|
Away
|
Venue
|
Attendance
|
| Nation
|
Club
|
Club
|
Nation
|
| 1966
|
Ivory Coast
|
Stade d'Abidjan
|
1–3
|
Real Bamako
|
Mali
|
Stade Municipal, Bamako
|
|
| 4–1
|
Stade Félix Houphouët-Boigny, Abidjan
|
|
| Stade d'Abidjan won 5–4 on aggregate
|
| 1967
|
Congo-Kinshasa
|
TP Englebert
|
1–1
|
Asante Kotoko
|
Ghana
|
Kumasi Sports Stadium, Kumasi
|
|
| 2–2
|
Stade du 20 Mai, Kinshasa
|
|
| w/o
|
Stade Omnisports de Yaoundé, Yaoundé
|
|
| TP Englebert won after Asante Kotoko failed to appear for the 3rd match
|
| 1968
|
Congo-Kinshasa
|
TP Englebert
|
5–0
|
Étoile Filante
|
Togo
|
Stade du 20 Mai, Kinshasa
|
|
| 1–4
|
Stade Général Eyadema, Lomé
|
|
| TP Englebert won 6–4 on aggregate
|
| 1969
|
United Arab Republic
|
Ismaily
|
2–2
|
TP Englebert
|
Congo-Kinshasa
|
Stade du 20 Mai, Kinshasa
|
|
| 3–1
|
Nasser Stadium, Cairo
|
130,000
|
| Ismaily won 5–3 on aggregate
|
| 1970
|
Ghana
|
Asante Kotoko
|
1–1
|
TP Englebert
|
Congo-Kinshasa
|
Kumasi Sports Stadium, Kumasi
|
|
| 2–1
|
Stade du 20 Mai, Kinshasa
|
|
| Asante Kotoko won 3–2 on aggregate
|
| 1971
|
Cameroon
|
Canon Yaoundé
|
0–3
|
Asante Kotoko
|
Ghana
|
Kumasi Sports Stadium, Kumasi
|
|
| 2–0
|
Stade Militaire Garoua, Yaoundé
|
|
| 1–0
|
Stade Militaire Garoua, Yaoundé
|
|
| Canon Yaoundé won 1–0 on the 3rd match
|
| 1972
|
Guinea
|
Hafia FC
|
4–2
|
Simba FC
|
Uganda
|
Stade du 28 Septembre, Conakry
|
|
| 3–2
|
Nakivubo Stadium, Kampala
|
|
| Hafia FC won 7–4 on aggregate
|
| 1973
|
Zaire
|
Vita Club
|
2–4
|
Asante Kotoko
|
Ghana
|
Kumasi Sports Stadium, Kumasi
|
|
| 3–0
|
Stade du 20 Mai, Kinshasa
|
|
| Vita Club won 5–4 on aggregate
|
| 1974
|
Congo
|
CARA Brazzaville
|
4–2
|
Ghazl El Mahalla
|
Egypt
|
Stade de la Revolution, Brazzaville
|
|
| 2–1
|
El Mahalla Stadium, El-Mahalla El-Kubra
|
|
| CARA Brazzaville won 6–3 on aggregate
|
| 1975
|
Guinea
|
Hafia FC
|
1–0
|
Enugu Rangers
|
Nigeria
|
Stade du 28 Septembre, Conakry
|
|
| 2–1
|
Surulere Stadium, Lagos
|
|
| Hafia FC won 3–1 on aggregate
|
| 1976
|
Algeria
|
MC Alger
|
0–3
|
Hafia FC
|
Guinea
|
Stade du 28 Septembre, Conakry
|
30,000
|
| 3–0
|
Stade 5 Juillet, Algiers
|
80,000
|
| MC Alger won 3–1 on penalties (3–3 on aggregate)
|
| 1977
|
Guinea
|
Hafia FC
|
1–0
|
Hearts of Oak
|
Ghana
|
Accra Sports Stadium, Accra
|
|
| 3–2
|
Stade du 28 Septembre, Conakry
|
|
| Hafia FC won 4–2 on aggregate
|
| 1978
|
Cameroon
|
Canon Yaoundé
|
0–0
|
Hafia FC
|
Guinea
|
Stade du 28 Septembre, Conakry
|
|
| 2–0
|
Stade Omnisport, Yaoundé
|
|
| Canon Yaoundé won 2–0 on aggregate
|
| 1979
|
Cameroon
|
Union Douala
|
0–1
|
Hearts of Oak
|
Ghana
|
Accra Sports Stadium, Accra
|
|
| 1–0
|
Stade Omnisport, Yaoundé
|
|
| Union Douala won 5–3 on penalties (1–1 on aggregate)
|
| 1980
|
Cameroon
|
Canon Yaoundé
|
2–2
|
AS Bilima
|
Zaire
|
Stade de Garoua, Garoua
|
|
| 3–0
|
Stade du 20 Mai, Kinshasa
|
|
| Canon Yaoundé won 5–2 on aggregate
|
| 1981
|
Algeria
|
JE Tizi Ouzou
|
4–0
|
Vita Club
|
Zaire
|
Stade 1er Novembre, Tizi-Ouzou
|
20,000
|
| 1–0
|
Stade du 20 Mai, Kinshasa
|
30,000
|
| JE Tizi Ouzou won 5–0 on aggregate
|
| 1982
|
Egypt
|
Al Ahly
|
3–0
|
Asante Kotoko
|
Ghana
|
Cairo International Stadium, Cairo
|
60,000
|
| 1–1
|
Kumasi Sports Stadium, Kumasi
|
50,000
|
| Al Ahly won 4–1 on aggregate
|
| 1983
|
Ghana
|
Asante Kotoko
|
0–0
|
Al Ahly
|
Egypt
|
Cairo International Stadium, Cairo
|
90,000
|
| 1–0
|
Kumasi Sports Stadium, Kumasi
|
50,000
|
| Asante Kotoko won 1–0 on aggregate
|
| 1984
|
Egypt
|
Zamalek SC
|
2–0
|
Shooting Stars
|
Nigeria
|
Cairo International Stadium, Cairo
|
|
| 1–0
|
Surulere Stadium, Lagos
|
|
| Zamalek SC won 3–0 on aggregate
|
| 1985
|
Morocco
|
FAR Rabat
|
5–2
|
AS Bilima
|
Zaire
|
Moulay Abdellah Stadium, Rabat
|
|
| 1–1
|
Mobutu Stadium, Lubumbashi
|
|
| FAR Rabat won 6–3 on aggregate
|
| 1986
|
Egypt
|
Zamalek SC
|
2–0
|
Africa Sports
|
Ivory Coast
|
Cairo International Stadium, Cairo
|
|
| 0–2
|
Stade Félix Houphouët-Boigny, Abidjan
|
|
| Zamalek SC won 4–2 on penalties (2–2 on aggregate)
|
| 1987
|
Egypt
|
Al Ahly
|
0–0
|
Al-Hilal
|
Sudan
|
Al-Hilal Stadium, Omdurman
|
|
| 2–0
|
Cairo International Stadium, Cairo
|
70,000
|
| Al Ahly won 2–0 on aggregate
|
| 1988
|
Algeria
|
Entente de Sétif
|
0–1
|
Iwuanyanwu Nationale
|
Nigeria
|
Liberty Stadium, Ibadan
|
|
| 4–0
|
Stade du 17 Juin, Constantine
|
55,000
|
| Entente de Sétif won 4–1 on aggregate
|
| 1989
|
Morocco
|
Raja Casablanca
|
1–0
|
MC Oran
|
Algeria
|
Stade Mohamed V, Casablanca
|
50,000
|
| 0–1
|
Stade du 19 Juin, Oran
|
45,000
|
| Raja Casablanca won 4–2 on penalties (1–1 on aggregate)
|
| 1990
|
Algeria
|
JS Kabylie
|
1–0
|
Nkana Red Devils
|
Zambia
|
Stade 5 Juillet, Algiers
|
65,000
|
| 0–1
|
Independence Stadium, Lusaka
|
35,000
|
| JS Kabylie won 5–3 on penalties (1–1 on aggregate)
|
| 1991
|
Tunisia
|
Club Africain
|
6–2
|
SC Villa
|
Uganda
|
Stade El Menzah, Tunis
|
40,000
|
| 1–1
|
Nakivubo Stadium, Kampala
|
25,000
|
| Club Africain won 7–3 on aggregate
|
| 1992
|
Morocco
|
Wydad AC
|
2–0
|
Al-Hilal
|
Sudan
|
Stade Mohamed V, Casablanca
|
|
| 0–0
|
Al-Hilal Stadium, Omdurman
|
|
| Wydad Casablanca won 2–0 on aggregate
|
| 1993
|
Egypt
|
Zamalek SC
|
0–0
|
Asante Kotoko
|
Ghana
|
Kumasi Sports Stadium, Kumasi
|
|
| 0–0
|
Cairo International Stadium, Cairo
|
|
| Zamalek SC won 7–6 on penalties (0–0 on aggregate)
|
| 1994
|
Tunisia
|
ES Tunis
|
0–0
|
Zamalek SC
|
Egypt
|
Cairo International Stadium, Cairo
|
90 000
|
| 3–1
|
Stade El Menzah, Tunis
|
50 000
|
| ES Tunis won 3–1 on aggregate
|
| 1995
|
South Africa
|
Orlando Pirates
|
2–2
|
ASEC Mimosas
|
Ivory Coast
|
FNB Stadium, Johannesburg
|
|
| 1–0
|
Stade Félix Houphouët-Boigny, Abidjan
|
|
| Orlando Pirates won 3–2 on aggregate
|
| 1996
|
Egypt
|
Zamalek SC
|
1–2
|
Shooting Stars
|
Nigeria
|
Lekan Salami Stadium, Ibadan
|
30 000
|
| 2–1
|
Cairo International Stadium, Cairo
|
75 000
|
| Zamalek SC won 5–4 on penalties (3–3 on aggregate)
|
| List of CAF Champions League finals (1997–present)
|
| 1997
|
Morocco
|
Raja Casablanca
|
0–1
|
Obuasi Goldfields
|
Ghana
|
Len Clay Stadium, Obuasi
|
20,000
|
| 1–0
|
Stade Mohamed V, Casablanca
|
85,000
|
| Raja Casablanca won 5–4 on penalties (1–1 on aggregate)
|
| 1998
|
Ivory Coast
|
ASEC Mimosas
|
0–0
|
Dynamos FC
|
Zimbabwe
|
National Sports Stadium, Harare
|
45,000
|
| 4–2
|
Stade Félix Houphouët-Boigny, Abidjan
|
50,000
|
| ASEC Mimosas won 4–2 on aggregate
|
| 1999
|
Morocco
|
Raja Casablanca
|
0–0
|
ES Tunis
|
Tunisia
|
Stade Père-Jégo, Casablanca
|
10,000
|
| 0–0
|
Stade El Menzah, Tunis
|
50,000
|
| Raja Casablanca won 4–3 on penalties (0–0 on aggregate)
|
| 2000
|
Ghana
|
Hearts of Oak
|
2–1
|
ES Tunis
|
Tunisia
|
Stade El Menzah, Tunis
|
30,000
|
| 3–1
|
Accra Sports Stadium, Accra
|
45,000
|
| Hearts of Oak won 5–2 on aggregate
|
| 2001
|
Egypt
|
Al Ahly
|
1–1
|
Mamelodi Sundowns
|
South Africa
|
Loftus Versfeld Stadium, Pretoria
|
5,000
|
| 3–0
|
Cairo International Stadium, Cairo
|
80,000
|
| Al Ahly won 4–1 on aggregate
|
| 2002
|
Egypt
|
Zamalek SC
|
0–0
|
Raja Casablanca
|
Morocco
|
Stade Mohamed V, Casablanca
|
60,000
|
| 1–0
|
Cairo International Stadium, Cairo
|
67,310
|
| Zamalek SC won 1–0 on aggregate
|
| 2003
|
Nigeria
|
Enyimba
|
2–0
|
Ismaily
|
Egypt
|
Enyimba International Stadium, Aba
|
|
| 0–1
|
Ismailia Stadium, Ismaïlia
|
20,000
|
| Enyimba won 2–1 on aggregate
|
| 2004
|
Nigeria
|
Enyimba
|
1–2
|
ES Sahel
|
Tunisia
|
Stade Olympique de Sousse, Sousse
|
28,000
|
| 2–1
|
Enyimba International Stadium, Aba
|
60,000
|
| Enyimba won 5–3 on penalties (3–3 on aggregate)
|
| 2005
|
Egypt
|
Al Ahly
|
0–0
|
Étoile du Sahel
|
Tunisia
|
Stade Olympique de Sousse, Sousse
|
20,000
|
| 3–0
|
Military Academy Stadium, Cairo
|
35,000
|
| Al Ahly won 3–0 on aggregate
|
| 2006
|
Egypt
|
Al Ahly
|
1–1
|
CS Sfaxien
|
Tunisia
|
Cairo International Stadium, Cairo
|
74,000
|
| 1–0
|
Stade 7 November, Radès
|
60,000
|
| Al Ahly won 2–1 on aggregate
|
| 2007
|
Tunisia
|
ES Sahel
|
0–0
|
Al Ahly
|
Egypt
|
Stade Olympique de Sousse, Sousse
|
25,000
|
| 3–1
|
Cairo International Stadium, Cairo
|
74,000
|
| ES Sahel won 3–1 on aggregate
|
| 2008
|
Egypt
|
Al Ahly
|
2–0
|
Coton Sport
|
Cameroon
|
Cairo International Stadium, Cairo
|
|
| 2–2
|
Roumdé Adjia Stadium, Garoua
|
|
| Al Ahly won 4–2 on aggregate
|
| 2009
|
DR Congo
|
TP Mazembe
|
1–2
|
Heartland FC
|
Nigeria
|
Dan Anyiam Stadium, Owerri
|
10,000
|
| 1–0
|
Stade Frederic Kibassa Maliba, Lubumbashi
|
35,000
|
| TP Mazembe won on away goals (2–2 on aggregate)
|
| 2010
|
DR Congo
|
TP Mazembe
|
5–0
|
ES Tunis
|
Tunisia
|
Stade Frederic Kibassa Maliba, Lubumbashi
|
50,000
|
| 1–1
|
Stade 7 November, Tunis
|
65,000
|
| TP Mazembe won 6–1 on aggregate
|
| 2011
|
Tunisia
|
ES Tunis
|
0–0
|
Wydad AC
|
Morocco
|
Stade Mohamed V, Casablanca
|
70,000
|
| 1–0
|
Stade Olympique de Radès, Tunis
|
65,000
|
| ES Tunis won 1–0 on aggregate
|
| 2012
|
Egypt
|
Al Ahly
|
1–1
|
ES Tunis
|
Tunisia
|
Borg El Arab Stadium, Alexandria
|
25,000
|
| 2–1
|
Stade Olympique de Radès, Tunis
|
31,000
|
| Al Ahly won 3–2 on aggregate
|
| 2013
|
Egypt
|
Al Ahly
|
1–1
|
Orlando Pirates
|
South Africa
|
Orlando Stadium, Soweto
|
40,000
|
| 2–0
|
Osman Ahmed Osman Stadium, Cairo
|
20,000
|
| Al Ahly won 3–1 on aggregate
|
| 2014
|
Algeria
|
ES Sétif
|
2–2
|
AS Vita Club
|
DR Congo
|
Stade Tata Raphaël, Kinshasa
|
40,000
|
| 1–1
|
Stade Mustapha Tchaker, Blida
|
35,000
|
| ES Sétif won on away goals (3–3 on aggregate)
|
| 2015
|
DR Congo
|
TP Mazembe
|
2–1
|
USM Alger
|
Algeria
|
Stade Omar Hamadi, Algiers
|
15,000
|
| 2–0
|
Stade TP Mazembe, Lubumbashi
|
18,000
|
| TP Mazembe won 4–1 on aggregate
|
| 2016
|
South Africa
|
Mamelodi Sundowns
|
3–0
|
Zamalek SC
|
Egypt
|
Lucas Masterpieces Moripe Stadium, Pretoria
|
30,000
|
| 0–1
|
Borg El Arab Stadium, Alexandria
|
70,000
|
| Mamelodi Sundowns won 3–1 on aggregate
|
| 2017
|
Morocco
|
Wydad AC
|
1–1
|
Al Ahly
|
Egypt
|
Borg El Arab Stadium, Alexandria
|
60,000
|
| 1–0
|
Stade Mohamed V, Casablanca
|
68,000
|
| Wydad Casablanca won 2–1 on aggregate
|
| 2018
|
Tunisia
|
ES Tunis
|
1–3
|
Al Ahly
|
Egypt
|
Borg El Arab Stadium, Alexandria
|
60,000
|
| 3–0
|
Stade Olympique de Radès, Tunis
|
60,000
|
| ES Tunis won 4–3 on aggregate
|
| 2018–19
|
Tunisia
|
ES Tunis
|
1–1
|
Wydad AC
|
Morocco
|
Prince Moulay Abdellah Stadium, Rabat
|
50,000
|
| Abandoned[a]
|
Stade Olympique de Radès, Tunis
|
60,000
|
| ES Tunis were declared champions after second leg was abandoned
|
| Single match format
|
| Year
|
Winner
|
Score
|
Runner-up
|
Venue
|
Attendance
|
| Nation
|
Club
|
Club
|
Nation
|
| 2019–20
|
Egypt
|
Al Ahly
|
2–1
|
Zamalek SC
|
Egypt
|
Cairo International Stadium, Cairo
|
0[b]
|
| 2020–21
|
Egypt
|
Al Ahly
|
3–0
|
Kaizer Chiefs
|
South Africa
|
Stade Mohamed V, Casablanca
|
0[c]
|
| 2021–22
|
Morocco
|
Wydad AC
|
2–0
|
Al Ahly
|
Egypt
|
Stade Mohamed V, Casablanca
|
45.000
|
| Two-legged format
|
| Season
|
Home
|
Score
|
Away
|
Venue
|
Attendance
|
| Nation
|
Club
|
Club
|
Nation
|
| 2022–23
|
Egypt
|
Al Ahly
|
2–1
|
Wydad AC
|
Morocco
|
Cairo International Stadium, Cairo
|
50.000
|
| 1–1
|
Stade Mohamed V, Casablanca
|
45.000
|
| Al Ahly won 3–2 on aggregate
|
| 2023–24
|
Egypt
|
Al Ahly
|
0–0
|
ES Tunis
|
Tunisia
|
Hammadi Agrebi Stadium, Tunis
|
35,000
|
| 1–0
|
Cairo International Stadium, Cairo
|
52,000
|
| Al Ahly won 1–0 on aggregate
|
| 2024–25
|
Egypt
|
Pyramids
|
1–1
|
Mamelodi Sundowns
|
South Africa
|
Loftus Versfeld Stadium, Pretoria
|
50,000
|
| 2–1
|
30 June Stadium, Cairo
|
25,000
|
| Pyramids won 3–2 on aggregate
|