Piala Malaysia
Final

Berikut ini merupakan juara dan finalis Piala Malaysia sejak pendiriannya pada tahun 1921.
| Tahun | Juara | Juara kedua | Skor | Lokasi |
| --- | --- | --- | --- | --- |
| 1921 |  Singapura |  Selangor | 2–1 | Selangor Club Padang, Kuala Lumpur |
| 1922 |   Selangor |  Singapura | 3–2 | Selangor Club Padang, Kuala Lumpur |
| 1923 |  Singapura |  Perak | 2–1 | Selangor Club Padang, Kuala Lumpur |
| 1924 |  Singapura |  Selangor | 1–0 | Selangor Club Padang, Kuala Lumpur |
| 1925 |  Singapura |  Selangor | 2–1 | Stadion Anson Road, Singapura |
| 1926 |  Perak |  Singapura | 1–0 | Selangor Club Padang, Kuala Lumpur |
| 1927 |  Selangor |  Singapura | 8–1 | Selangor Club Padang, Kuala Lumpur |
| 1928 |   Selangor &   Singapura (juara bersama) |   Selangor &   Singapura (juara bersama) | 2–2 | Selangor Club Padang, Kuala Lumpur |
| 1929 |   Selangor &   Singapura (juara bersama) |   Selangor &   Singapura (juara bersama) | 2–2 | Selangor Club Padang, Kuala Lumpur |
| 1930 |  Singapura |  Selangor | 3–0 | Stadion Anson Road, Singapura |
| 1931 |  Perak |  Singapura | 3–1 | Chinese Assembly Hall, Ipoh |
| 1932 |  Singapura |  Selangor | 5–3 | Selangor Club Padang, Kuala Lumpur |
| 1933 |  Singapura |  Selangor | 8–2 | Rifle Range Road, Singapore |
| 1934 |  Singapura |  Penang | 2–1 | Selangor Club Padang, Kuala Lumpur |
| 1935 |  Selangor |  Singapura | 3–2 | Selangor Club Padang, Kuala Lumpur |
| 1936 |  Selangor |  Singapura | 1–0 | Rifle Range Road, Singapore |
| 1937 |  Singapura |  Selangor | 2–1 | Selangor Club Padang, Kuala Lumpur |
| 1938 |  Selangor |  Singapura | 1–0 | Selangor Club Padang, Kuala Lumpur |
| 1939 |  Singapura |  Selangor | 3–2 | Selangor Club Padang, Kuala Lumpur |
| 1940 |  Singapura |  Kedah | 2–0 | Selangor Club Padang, Kuala Lumpur |
| 1941 |  Singapura |  Penang | 2–1 | Selangor Club Padang, Kuala Lumpur |
1942–1947: Tidak diselenggarakan selama Perang Dunia II
| 1948 |  Negeri Sembilan |  Selangor | 2–2 (2–1 a.p.) | Selangor Club Padang, Kuala Lumpur |
| 1949 |  Selangor |  ATM | 3–2 | Selangor Club Padang, Kuala Lumpur |
| 1950 |  Singapura |  Penang | 2–0 | Selangor Club Padang, Kuala Lumpur |
| 1951 |  Singapura |  Perak | 6–0 | Selangor Club Padang, Kuala Lumpur |
| 1952 |  Singapura |  Penang | 3–2 | Chinese Assembly Hall, Ipoh |
| 1953 |  Penang |  Singapura | 3–2 | Chinese Assembly Hall, Ipoh |
| 1954 |  Penang |  Singapura | 3–0 | Selangor Club Padang, Kuala Lumpur |
| 1955 |  Singapura |  Kelantan | 3–1 | Rifle Range Road, Singapore |
| 1956 |  Selangor |  Singapura | 2–1 | Selangor Club Padang, Kuala Lumpur |
| 1957 |  Perak |  Selangor | 3–2 | Stadion Merdeka, Kuala Lumpur |
| 1958 |  Penang |  Singapura | 3–3 (3–1 pen.) | Stadion Merdeka, Kuala Lumpur |
| 1959 |  Selangor |  Perak | 4–0 | Stadion Merdeka, Kuala Lumpur |
| 1960 |  Singapura |  Perak | 2–0 | Stadion Merdeka, Kuala Lumpur |
| 1961 |  Selangor |  Perak | 4–2 | Stadion Merdeka, Kuala Lumpur |
| 1962 |  Selangor |  Penang | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1963 |  Selangor |  Penang | 6–2 | Stadion Merdeka, Kuala Lumpur |
| 1964 |  Singapura |  Perak | 3–2 | Stadion Merdeka, Kuala Lumpur |
| 1965 |  Singapura |  Selangor | 3–1 | Stadion Merdeka, Kuala Lumpur |
| 1966 |  Selangor |  ATM | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1967 |  Perak |  Singapura | 2–1 | Stadion Merdeka, Kuala Lumpur |
| 1968 |  Selangor |  Penang | 8–1 | Stadion Merdeka, Kuala Lumpur |
| 1969 |  Selangor |  Penang | 1–0 | City Stadium, George Town |
| 1970 |  Perak |  Kelantan | 2–0 | Stadion Merdeka, Kuala Lumpur |
| 1971 |  Selangor |  Perak | 3–1 | Perak Stadium, Ipoh |
| 1972 |  Selangor |  Perak | 3–0 | Stadion Merdeka, Kuala Lumpur |
| 1973 |  Selangor |  Terengganu | 2–1 | Stadion Merdeka, Kuala Lumpur |
| 1974 |  Penang |  Perak | 2–1 | City Stadium, George Town |
| 1975 |  Selangor |  Singapura | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1976 |  Selangor |  Singapura | 3–0 | Stadion Merdeka, Kuala Lumpur |
| 1977 |  Singapura |  Penang | 3–2 | Stadion Merdeka, Kuala Lumpur |
| 1978 |  Selangor |  Singapura | 4–2 | Stadion Merdeka, Kuala Lumpur |
| 1979 |  Selangor |  Singapura | 2–0 | Stadion Merdeka, Kuala Lumpur |
| 1980 |  Singapura |  Selangor | 2–1 | Stadion Merdeka, Kuala Lumpur |
| 1981 |  Selangor |  Singapura | 4–0 | Stadion Merdeka, Kuala Lumpur |
| 1982 |  Selangor |  Terengganu | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1983 |  Pahang |  Selangor | 3–2 | Stadion Merdeka, Kuala Lumpur |
| 1984 |  Selangor |  Pahang | 3–1 | Stadion Merdeka, Kuala Lumpur |
| 1985 |  Johor |  Kuala Lumpur | 2–0 | Stadion Merdeka, Kuala Lumpur |
| 1986 |  Selangor |  Johor | 6–1 | Stadion Merdeka, Kuala Lumpur |
| 1987 |  Kuala Lumpur |  Kedah | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1988 |  Kuala Lumpur |  Kedah | 3–0 | Stadion Merdeka, Kuala Lumpur |
| 1989 |  Kuala Lumpur |  Kedah | 2–1 | Stadion Merdeka, Kuala Lumpur |
| 1990 |  Kedah |  Singapura | 3–1 | Stadion Merdeka, Kuala Lumpur |
| 1991 |  Johor |  Selangor | 3–1 | Stadion Merdeka, Kuala Lumpur |
| 1992 |  Pahang |  Kedah | 1–0 | Stadion Merdeka, Kuala Lumpur |
| 1993 |  Kedah |  Singapura | 2–0 | Stadion Merdeka, Kuala Lumpur |
| 1994 |  Singapura |  Pahang | 4–0 | Stadion Shah Alam, Shah Alam |
| 1995 |  Selangor |  Pahang | 1–0 | Stadion Shah Alam, Shah Alam |
| 1996 |  Selangor |  Sabah | 1–1 (5–4 pen.) | Stadion Shah Alam, Shah Alam |
| 1997 |  Selangor |  Pahang | 1–0 | Stadion Shah Alam, Shah Alam |
| 1998 |  Perak |  Terengganu | 1–1 (5–3 pen.) | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 1999 |  Brunei |  Sarawak | 2–1 | Stadion Merdeka, Kuala Lumpur |
| 2000 |  Perak |  Negeri Sembilan | 2–0 | Stadion Shah Alam, Shah Alam |
| 2001 |  Terengganu |  Perak | 2–1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2002 |  Selangor |  Sabah | 1–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2003 |  MPPJ FC |  Sabah | 3–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2004 |  Perlis |  Kedah | 1–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2005 |  Selangor |  Perlis | 3–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2006 |  Perlis |  Negeri Sembilan | 2–1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2007 |  Kedah |  Perak | 3–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2008 |  Kedah |  Selangor | 3–2 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2009 |  Negeri Sembilan |  Kelantan | 3–1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2010 |  Kelantan |  Negeri Sembilan | 2–1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2011 |  Negeri Sembilan |  Terengganu | 2–1 | Stadion Shah Alam, Shah Alam |
| 2012 |  Kelantan |  ATM | 3–2 | Stadion Shah Alam, Shah Alam |
| 2013 |  Pahang |  Kelantan | 1–0 | Stadion Shah Alam, Shah Alam |
| 2014 |  Pahang |  Johor Darul Ta'zim | 2–2 (5–3 a.p.) | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2015 |  Selangor |  Kedah | 2–0 | Stadion Shah Alam, Shah Alam |
| 2016 |   Kedah |  Selangor | 1–1 (6–5 a.p.) | Stadion Shah Alam, Shah Alam |
| 2017 |  Johor Darul Ta'zim |  Kedah | 2–0 | Stadion Shah Alam, Shah Alam |
| 2018 |  Perak |  Terengganu | 3–3 (4–1 a.p.) | Stadion Shah Alam, Shah Alam |
| 2019 |  Johor Darul Ta'zim |  Kedah | 3–0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
2020: Tidak diselenggarakan selama pandemi COVID-19
| 2021 |  Kuala Lumpur City |  Johor Darul Ta'zim | 2-0 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2022 |  Johor Darul Ta'zim |  Selangor | 2-1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |
| 2023 |  Johor Darul Ta'zim |  Terengganu | 3-1 | Stadion Nasional Bukit Jalil, Kuala Lumpur |