# List of African Cup of Champions Clubs and CAF Champions League finals

The CAF Champions League is a seasonal association football competition established in 1964 as the African Cup of Champions Clubs, open initially to the league champions of all CAF member associations, but since 1997 also currently includes the clubs finishing second in the strongest leagues from the CAF 5-year ranking and the competition's defending champions.

## List of finals

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

## Performances
### By nations

Performance in finals by nation :
| Nation | Titles | Runners-up | Total |
| Egypt | 18 | 10 | 28 |
| Morocco | 7 | 4 | 11 |
| Tunisia | 6 | 7 | 13 |
| DR Congo | 6 | 6 | 12 |
| Algeria | 5 | 2 | 7 |
| Cameroon | 5 | 1 | 6 |
| Ghana | 3 | 8 | 11 |
| Guinea | 3 | 2 | 5 |
| Nigeria | 2 | 5 | 7 |
| South Africa | 2 | 3 | 5 |
| Ivory Coast | 2 | 2 | 4 |
| Congo | 1 | 0 | 1 |
| Mali | 0 | 2 | 2 |
| Uganda | 0 | 2 | 2 |
| Sudan | 0 | 2 | 2 |
| Togo | 0 | 1 | 1 |
| Zambia | 0 | 1 | 1 |
| Zimbabwe | 0 | 1 | 1 |