| # | Season | Winners | Score | Losers | Notes |
|---|
| 1 | 1888–89 | Clapton | 4–0 | Phoenix | |
| 2 | 1889–90 | London Caledonians | 3–1 | Crouch End | |
| 3 | 1890–91 | London Caledonians | 1–1 | Uxbridge | |
| Replay | London Caledonians | 2–0 | Uxbridge | |
| 4 | 1891–92 | 2nd Battalion Scots Guards | 4–2 | 1st Battalion Scots Guards | |
| 5 | 1892–93 | 2nd Battalion Scots Guards | 2–1 | Uxbridge | |
| 6 | 1893–94 | Uxbridge | 2–0 | 3rd Battalion Grenadier Guards | |
| 7 | 1894–95 | 2nd Battalion Scots Guards | 5–1 | London Welsh | |
| 8 | 1895–96 | Uxbridge | 1–1 | Southall | |
| Replay | Uxbridge | 3–2 | Southall | |
| 9 | 1896–97 | Ealing Association | 2–1 | 3rd Battalion Grenadier Guards | |
| 10 | 1897–98 | Brentford | 2–3 | 2nd Battalion Scots Guards | [nb 1] |
| Replay | Brentford | 3–2 | 2nd Battalion Scots Guards | |
| 11 | 1898–99 | London Caledonians | 0–0 | West Hampstead | |
| 11 | Replay | London Caledonians | 5–0 | West Hampstead | |
| 12 | 1899–1900 | London Caledonians | 4–0 | Crouch End Vampires | |
| 13 | 1900–01 | West Hampstead | 2–2 | London Caledonians | |
| Replay | West Hampstead | 3–2 | London Caledonians | |
| 14 | 1901–02 | Richmond Association | 1–0 | Ealing Association | |
| 15 | 1902–03 | Shepherd's Bush | 4–1 | West Hampstead | |
| 16 | 1903–04 | Richmond Association | 0–0 | Shepherd's Bush | |
| Replay | Richmond Association | 1–0 | Shepherd's Bush | |
| 17 | 1904–05 | Ealing Association | 1–0 | London Caledonians | |
| 18 | 1905–06 | West Hampstead | 2–0 | 2nd Battalion Grenadier Guards | |
| 19 | 1906–07 | New Crusaders | 3–0 | West Hampstead | |
| 20 | 1907–08 | Southall | 3–0 | Hanwell | |
| 21 | 1908–09 | 1st Battalion Scots Guards | 4–0 | West Hampstead | |
| 22 | 1909–10 | Shepherd's Bush | 4–0 | Staines | |
| 23 | 1910–11 | Southall | 1–0 | Enfield | |
| 24 | 1911–12 | Southall | 3–1 | Lotus | |
| 25 | 1912–13 | Southall | 2–0 | West London Old Boys | |
| 26 | 1913–14 | Enfield | 2–0 | Uxbridge | |
| 27 | 1919–20 | Botwell Mission | 3–1 | Southall | |
| 28 | 1920–21 | Botwell Mission | 3–0 | Enfield | |
| 29 | 1921–22 | RAF Uxbridge | 2–1 | Barnet | |
| 30 | 1922–23 | Southall | 2–1 | Botwell Mission | |
| 31 | 1923–24 | Southall | 3–1 | Wealdstone | |
| 32 | 1924–25 | Southall | 5–0 | Hampstead Town | |
| 33 | 1925–26 | Botwell Mission | 2–1 | Barnet | |
| 34 | 1926–27 | Southall | 2–1 | Uxbridge | |
| 35 | 1927–28 | Metropolitan Police | 3–0 | RAF Uxbridge | |
| 36 | 1928–29 | Finchley | 2–0 | Southall | |
| 37 | 1929–30 | Wealdstone | 2–2 | Haywards Sports (Enfield) | |
| Replay | Wealdstone | 3–1 | Haywards Sports (Enfield) | |
| 38 | 1930–31 | Hayes | 4–1 | Hampstead | |
| 39 | 1931–32 | Barnet | 0–2 | Park Royal | |
| Replay | Barnet | 4–3 | Park Royal | [nb 1] |
| 40 | 1932–33 | Barnet | 1–1 | Staines Town | |
| Replay | Barnet | 3–1 | Staines Town | |
| 41 | 1933–34 | Golders Green | 2–0 | Park Royal | |
| 42 | 1934–35 | London Caledonians | 2–0 | Uxbridge | |
| 43 | 1935–36 | Hayes | 2–1 | Finchley | |
| 44 | 1936–37 | Southall | 1–0 | Hayes | |
| 45 | 1937–38 | Wealdstone | 3–1 | Tufnell Park | |
| 46 | 1938–39 | Golders Green | 4–0 | Wealdstone | |
| 47 | 1939–40 | Hayes | 1–0 | Finchley | |
| 48 | 1940–41 | Wealdstone | 3–1 | Pinner | |
| 49 | 1941–42 | Wealdstone | 4–1 | Finchley | |
| 50 | 1942–43 | Wealdstone | 3–3 | Finchley | |
| Replay | Wealdstone | 3–0 | Finchley | |
| 51 | 1943–44 | Finchley | 3–0 | Acton Town | |
| 52 | 1944–45 | Southall | 3–1 | Golders Green | |
| 53 | 1945–46 | Wealdstone | 2–0 | Edgware Town | |
| 54 | 1946–47 | Enfield | 1–0 | Hendon | |
| 55 | 1947–48 | Edgware Town | 2–1 | Enfield | |
| 56 | 1948–49 | Hounslow | 1–0 | Hayes | |
| 57 | 1949–50 | Hayes | 2–1 | Hounslow | |
| 58 | 1950–51 | Uxbridge | 2–1 | Hayes | |
| 59 | 1951–52 | Finchley | 3–0 | Enfield | |
| 60 | 1952–53 | Hounslow | 3–1 | Finchley | |
| 61 | 1953–54 | Southall | 3–0 | Edgware Town | |
| 62 | 1954–55 | Southall | 4–0 | Uxbridge | |
| 63 | 1955–56 | Hendon | 5–1 | Wembley | |
| 64 | 1956–57 | Hounslow Town | 1–0 | Hendon | |
| 65 | 1957–58 | Hendon | 3–0 | Enfield | |
| 66 | 1958–59 | Wealdstone | 3–1 | Enfield | |
| 67 | 1959–60 | Hendon | 2–1 | Enfield | |
| 68 | 1960–61 | Hounslow Town | 0–0 | Hendon | |
| Replay | Hounslow Town | 3–2 aet | Hendon | |
| 69 | 1961–62 | Enfield | 4–1 | Wealdstone | |
| 70 | 1962–63 | Wealdstone | 2–0 | Enfield | |
| 71 | 1963–64 | Wealdstone | 2–0 | Finchley | |
| 72 | 1964–65 | Hendon | 1–0 | Finchley | |
| 73 | 1965–66 | Enfield | 4–1 | Wealdstone | [nb 2] |
| 74 | 1966–67 | Hendon | 4–1 | Enfield | [nb 2] |
| 75 | 1967–68 | Wealdstone | 3–1 | Hayes | [nb 2] |
| 76 | 1968–69 | Enfield | 6–0 | Wembley | [nb 2] |
| 77 | 1969–70 | Enfield | 3–2 | Wealdstone | [nb 2] |
| 78 | 1970–71 | Enfield | 3–0 | Hendon | [nb 2] |
| 79 | 1971–72 | Hendon | 5–2 | Hampton | [nb 2] |
| 80 | 1972–73 | Hendon | 3–3 | Enfield | [nb 2] |
| Replay | Hendon | 3–0 | Enfield | |
| 81 | 1973–74 | Hendon | 4–1 | Edgware Town | [nb 2] |
| 82 | 1974–75 | Staines Town | 1–1 | Hendon | |
| Replay | Staines Town | 1–0 | Hendon | |
| 83 | 1975–76 | Staines Town | 2–0 | Enfield | |
| 84 | 1976–77 | Staines Town | 3–2 | Hampton | |
| 85 | 1977–78 | Enfield | 2–0 | Hendon | |
| 86 | 1978–79 | Enfield | 2–0 | Wembley | |
| 87 | 1979–80 | Enfield | 2–0 | Staines Town | |
| 88 | 1980–81 | Enfield | 2–0 | Hayes | |
| 89 | 1981–82 | Hayes | 2–0 | Wealdstone | |
| 90 | 1982–83 | Harrow Borough | 2–0 | Wealdstone | |
| 91 | 1983–84 | Wembley | 5–1 | Hendon | |
| 92 | 1984–85 | Wealdstone | 4–2 | Enfield | |
| 93 | 1985–86 | Hendon | 2–0 aet | Southall | |
| 94 | 1986–87 | Wembley | 1–0 | Hayes | |
| 95 | 1987–88 | Staines Town | 2–1 aet | Wembley | |
| 96 | 1988–89 | Enfield | 2–1 | Kingsbury Town | |
| 97 | 1989–90 | Staines Town | 1–0 | Yeading | |
| 98 | 1990–91 | Enfield | 1–0 | Yeading | |
| 99 | 1991–92 | Yeading | 2–1 | Wembley | |
| 100 | 1992–93 | Harrow Borough | 1–0 | Wembley | |
| 101 | 1993–94 | Staines Town | 2–1 | Edgware Town | |
| 102 | 1994–95 | Yeading | 2–0 aet | Staines Town | |
| 103 | 1995–96 | Hayes | 3–2 aet | Hampton | |
| 104 | 1996–97 | Staines Town | 0–0 aet | Yeading | [nb 3] |
| 105 | 1997–98 | Enfield | 3–2 | Uxbridge | |
| 106 | 1998–99 | Hendon | 2–2 | Wembley | [nb 4] |
| 107 | 1999–2000 | Hayes | 2–0 | Northwood | |
| 108 | 2000–01 | Uxbridge | 3–0 | Harrow Borough | |
| 109 | 2001–02 | Hendon | 4–2 aet | Northwood | |
| 110 | 2002–03 | Hendon | 2–0 | Enfield Town | |
| 111 | 2003–04 | Hendon | 3–1 aet | Uxbridge | |
| 112 | 2004–05 | Yeading | 3–1 | Hampton & Richmond Borough | |
| 113 | 2005–06 | Hampton & Richmond Borough | 0–0 aet | Hayes | [nb 5] |
| 114 | 2006–07 | Northwood | 1–1 aet | Hayes | [nb 6] |
| 115 | 2007–08 | Hampton & Richmond Borough | 3–0 | Hendon | |
| 116 | 2008–09 | AFC Hayes | 2–1 | Hendon | |
| 117 | 2009–10 | Staines Town | 2–0 | Uxbridge | |
| 118 | 2010–11 | Staines Town | 3–2 | Hayes & Yeading United | |
| 119 | 2011–12 | Hampton & Richmond Borough | 2–0 | Wealdstone | |
| 120 | 2012–13 | Staines Town | 2–0 | Ashford Town (Middlesex) | |
| 121 | 2013–14 | Hampton & Richmond Borough | 3–2 | Wealdstone | |
| 122 | 2014–15 | Harrow Borough | 1–0 | Hanwell Town | |
| 123 | 2015–16 | Northwood | 2–0 | Enfield Town | |
| 124 | 2016–17 | Hampton & Richmond Borough | 1–0 | Wealdstone | |
| 125 | 2017–18 | Hendon | 0–0 | Staines Town | [nb 7] |
| 126 | 2018–19 | Brentford B | 4–0 | Harrow Borough | |
| 127 | 2020–21 | Hanwell Town | 1–0 | Harefield United | |
| 128 | 2021–22 | Barnet | 1–1 | Brentford B | [nb 8] |
| 129 | 2022–23 | Hayes & Yeading United | 5–0 | Harrow Borough | |
| 130 | 2023–24 | Rayners Lane | 3–2 | Hayes & Yeading United | |
| 131 | 2024–25 | Rayners Lane | 2–0 | Hanwell Town | |