| 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 |
Winner |
Score |
Runner-up |
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 |
| 3–0 |Abandoned[a] |
Stade Olympique de Radès, Tunis |
60,000 |
| ES Tunis were declared champions with 4–1 on aggregate 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 |
Winner |
Score |
Runner-up |
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 |
| 2025–26 |
South Africa |
Mamelodi Sundowns |
1–0 |
FAR Rabat |
Morocco |
Loftus Versfeld Stadium, Pretoria |
51,000 |
| 1–1 |
Prince Moulay Abdellah Stadium, Rabat |
60,000 |
| Mamelodi Sundowns won 2–1 on aggregate |