| Season |
Winner |
Score |
Runner-up |
Venue |
Attendance |
| 1877–78 | Wrexham | 1–0 | Druids | Acton Park[1] Wrexham | 1,500 |
| 1878–79 | Newtown White Stars | 1–0 | Wrexham | the Cricket Field, Oswestry | 2,500 |
| 1879–80 | Druids | 2–1 | Ruthin | Racecourse Ground, Wrexham | 4,000 |
| 1880–81 | Druids | 2–0 | Newtown White Stars | Racecourse Ground, Wrexham | 4,000 |
| 1881–82 | Druids | 5–0 | Northwich Victoria | Racecourse Ground, Wrexham | 2,000 |
| 1882–83 | Wrexham | 1–0 | Druids | Racecourse Ground, Wrexham | 2,000 |
| 1883–84 | Oswestry White Star | 0–0 | Druids | Racecourse Ground, Wrexham | 2,000 |
| Replay | Oswestry White Star | 1–0 | Druids | Racecourse Ground, Wrexham | 3,000 |
| 1884–85 | Druids | 1–1 | Oswestry White Star | Racecourse Ground, Wrexham | 2,000 |
| Replay | Druids | 3–1(a.e.t) | Oswestry White Star | Racecourse Ground, Wrexham | 2,000 |
| 1885–86 | Druids | 4–0 | Newtown | Racecourse Ground, Wrexham | 3,000 |
| 1886–87 | Chirk AAA | 2–1 | Davenham | Alexandra Recreation Ground, Crewe | 1,500 |
| 1887–88 | Chirk AAA | 5–0 | Newtown | Owen's Field, Chester Road, Wrexham[2] | 3,000 |
| 1888–89 | Bangor | 2–1 | Northwich Victoria | Racecourse Ground, Wrexham | 4,000 |
| 1889–90 | Chirk AAA | 1–0 | Wrexham | Racecourse Ground, Wrexham | 3,500 |
| 1890–91[3] | Shrewsbury Town | 5–2 | Wrexham | the Cricket Field, Oswestry | 3,000 |
| 1891–92[4] | Chirk AAA | 2–1 | Westminster Rovers | Wrexham Racecourse, Wrexham | 4,000 |
| 1892–93 | Wrexham | 2–1 | Chirk AAA | the Cricket Field, Oswestry | 5,000 |
| 1893–94 | Chirk AAA | 2–0 | Westminster Rovers | Wynnstay Park, Ruabon | 3,000 |
| 1894–95 | Newtown | 3–2 | Wrexham | Welshpool | 5,000 |
| 1895–96 | Bangor | 3–0 | Wrexham | Council Field, Llandudno | 7,000 |
| 1896–97 | Wrexham | 2–0 | Newtown | the Cricket Field, Oswestry | 6,000 |
| 1897–98 | Druids | 1–1 | Wrexham | the Cricket Field, Oswestry | 4,500 |
| Replay | Druids | 2–1 | Wrexham | the Cricket Field, Oswestry | 1,500 |
| 1898–99 | Druids | 2–2 | Wrexham | Hand Field, Chirk | 4,000 |
| Replay | Druids | 1–0 | Wrexham | Hand Field, Chirk | 3,500 |
| 1899–1900 | Aberystwyth Town | 3–0 | Druids | the Cunnings, Newtown | 3,000 |
| 1900–01[5] | Oswestry United | 1–0 | Druids | Racecourse Ground, Wrexham | 7,000 |
| 1901–02 | Wellington Town | 1–0 | Wrexham | Racecourse Ground, Wrexham | 6,000 |
| 1902–03[6] | Wrexham | 8–0 | Aberaman Athletic | Racecourse Ground, Wrexham | 5,500 |
| 1903–04 | Druids | 3–2 | Aberdare Athletic | Racecourse Ground, Wrexham | 6,500 |
| 1904–05 | Wrexham | 3–0 | Aberdare Athletic | Racecourse Ground, Wrexham | 6,191 |
| 1905–06 | Wellington Town | 3–2 | Whitchurch | Racecourse Ground, Wrexham | 4,000 |
| 1906–07 | Oswestry United | 2–0 | Whitchurch | Racecourse Ground, Wrexham | 6,000 |
| 1907–08 | Chester City | 3–1 | Connah's Quay & Shotton | Racecourse Ground, Wrexham | 8,000 |
| 1908–09 | Wrexham | 1–0 | Chester City | Racecourse Ground, Wrexham | 9,000 |
| 1909–10 | Wrexham | 2–1 | Chester City | Racecourse Ground, Wrexham | 10,000 |
| 1910–11 | Wrexham | 6–0 | Connah's Quay & Shotton | Racecourse Ground, Wrexham | 3,000 |
| 1911–12 | Cardiff City | 0–0 | Pontypridd | Ninian Park, Cardiff | 14,000 |
| Replay | Cardiff City | 3–0 | Pontypridd | Ynys Field, Aberdare | 7,000 |
| 1912–13 | Swansea Town | 0–0 | Pontypridd | Ninian Park, Cardiff | 9,000 |
| Replay | Swansea Town | 1–0 | Pontypridd | Mid-Rhondda Ground, Tonypandy[7] | 8,319 |
| 1913–14 | Llanelli | 0–0 | Wrexham | Vetch Field, Swansea | 15,000 |
| Replay | Wrexham | 3–0 | Llanelli | the Cricket Field, Oswestry | 3,639 |
| 1914–15 | Wrexham | 1–1 | Swansea Town | Racecourse Ground, Wrexham | 6,000 |
| Replay | Wrexham | 1–0 | Swansea Town | Ninian Park, Cardiff | 4,000 |
| 1919–20 | Cardiff City | 2–0 | Wrexham | Racecourse Ground, Wrexham | 6,618 |
| 1920–21 | Pontypridd | 1–1 | Wrexham | Ninian Park, Cardiff | 7,000 |
| Replay | Wrexham | 3–1 | Pontypridd | Gay Meadow, Shrewsbury | 8,000 |
| 1921–22 | Cardiff City | 2–0 | Ton Pentre | Taff Vale Park, Pontypridd | 8,000 |
| 1922–23 | Cardiff City | 3–2 | Aberdare Athletic | Vetch Field, Swansea | 8,000 |
| 1923–24 | Merthyr Town | 2–2 | Wrexham | Taff Vale Park, Pontypridd | 4,500 |
| Replay | Wrexham | 1–0 | Merthyr Town | Racecourse Ground, Wrexham | 8,000 |
| 1924–25 | Wrexham | 3–1 | Flint Town | Racecourse Ground, Wrexham | 6,565 |
| 1925–26 | Ebbw Vale | 3–2 | Swansea Town | Welfare Ground, Ebbw Vale | 2,500 |
| 1926–27 | Cardiff City | 2–0 | Rhyl Athletic | Racecourse Ground, Wrexham | 9,690 |
| 1927–28 | Cardiff City | 2–0 | Bangor Athletic | Farrar Road, Bangor | 12,000 |
| 1928–29 | Connah's Quay & Shotton | 3–0 | Cardiff City | Racecourse Ground, Wrexham | 9,623 |
| 1929–30 | Cardiff City | 0–0(a.e.t) | Rhyl Athletic | Gay Meadow, Shrewsbury | 5,892 |
| Replay | Cardiff City | 4–2 | Rhyl Athletic | Racecourse Ground, Wrexham | 7,000 |
| 1930–31 | Wrexham | 7–0 | Shrewsbury Town | Racecourse Ground, Wrexham | 8,868 |
| 1931–32 | Wrexham | 1–1 | Swansea Town | Racecourse Ground, Wrexham | 8,300 |
| Replay | Swansea Town | 2–0 | Wrexham | Vetch Field, Swansea | 5,000 |
| 1932–33 | Chester City | 2–0 | Wrexham | Sealand Road, Chester | 15,000 |
| 1933–34 | Bristol City | 1–1 | Tranmere Rovers | Racecourse Ground, Wrexham | 4,922 |
| Replay | Bristol City | 3–0 | Tranmere Rovers | Sealand Road, Chester | 4,000 |
| 1934–35 | Tranmere Rovers | 1–0 | Chester City | Sealand Road, Chester | 10,000 |
| 1935–36 | Crewe Alexandra | 2–0 | Chester City | Racecourse Ground, Wrexham | 6,807 |
| 1936–37 | Crewe Alexandra | 1–1 | Rhyl Athletic | Sealand Road, Chester | Unknown |
| Replay | Crewe Alexandra | 3–1 | Rhyl Athletic | Sealand Road, Chester | Unknown |
| 1937–38 | Shrewsbury Town | 2–2 | Swansea Town | Gay Meadow, Shrewsbury | 14,500 |
| Replay | Shrewsbury Town | 2–1 | Swansea Town | Gay Meadow, Shrewsbury | 8,000 |
| 1938–39 | South Liverpool | 2–1 | Cardiff City | Racecourse Ground, Wrexham | 5,000 |
| 1939–40 | Wellington Town | 4–0 | Swansea Town | Gay Meadow, Shrewsbury | 6,000 |
| 1946–47 | Chester City | 0–0 | Merthyr Tydfil | Ninian Park, Cardiff | 27,000 |
| Replay | Chester City | 5–1 | Merthyr Tydfil | Racecourse Ground, Wrexham | 11,190 |
| 1947–48 | Lovell's Athletic | 3–0 | Shrewsbury Town | Racecourse Ground, Wrexham | 10,000 |
| 1948–49 | Merthyr Tydfil | 2–0 | Swansea Town | Ninian Park, Cardiff | 35,000 |
| 1949–50 | Swansea Town | 4–1 | Wrexham | Ninian Park, Cardiff | 12,000 |
| 1950–51 | Merthyr Tydfil | 1–1 | Cardiff City | Vetch Field, Swansea | 12,000 |
| Replay | Merthyr Tydfil | 3–2 | Cardiff City | Vetch Field, Swansea | 18,000 |
| 1951–52 | Rhyl | 4–3 | Merthyr Tydfil | Ninian Park, Cardiff | 10,000 |
| 1952–53 | Rhyl | 2–1 | Chester City | Farrar Road, Bangor | 8,500 |
| 1953–54 | Flint Town United | 2–0 | Chester City | Racecourse Ground, Wrexham | 15,584 |
| 1954–55 | Chester City | 1–1 | Barry Town | Racecourse Ground, Wrexham | 6,766 |
| Replay | Barry Town | 4–2 | Chester City | Ninian Park, Cardiff | 8,450 |
| 1955–56 | Cardiff City | 3–2 | Swansea Town | Ninian Park, Cardiff | 37,500 |
| 1956–57 | Wrexham | 2–1 | Swansea Town | Ninian Park, Cardiff | 10,000 |
| 1957–58 | Chester City | 1–1 | Wrexham | Sealand Road, Chester | 7,742 |
| Replay | Wrexham | 2–1 | Chester City | Racecourse Ground, Wrexham | 7,542 |
| 1958–59 | Cardiff City | 2–0 | Lovell's Athletic | Somerton Park, Newport | Unknown |
| 1959–60 | Wrexham | 1–0 | Cardiff City | Racecourse Ground, Wrexham | 11,172 |
| 1960–61 | Swansea Town | 3–1 | Bangor City | Ninian Park, Cardiff | 5,938 |
| Season |
Home Team |
Score |
Away Team |
Venue |
Attendance |
| 1961–62 | Wrexham | 3–0 | Bangor City | Racecourse Ground, Wrexham | 7,638 |
| 2nd Leg | Bangor City | 2–0 | Wrexham | Farrar Road, Bangor | 7,500 |
| Play off | Bangor City | 3–1 | Wrexham | Belle Vue, Rhyl | 12,000 |
| 1962–63 | Borough United | 2–1 | Newport County | Nant-y-Coed, Llandudno Junction | 3,500 |
| 2nd Leg | Newport County | 0–0 | Borough United | Somerton Park, Newport | 5,000 |
| 1963–64 | Bangor City | 2–0 | Cardiff City | Farrar Road, Bangor | 8,500 |
| 2nd Leg | Cardiff City | 3–1 | Bangor City | Ninian Park, Cardiff | 9,050 |
| Play off | Cardiff City | 2–0 | Bangor City | Racecourse Ground, Wrexham | 10,014 |
| 1964–65 | Cardiff City | 5–1 | Wrexham | Ninian Park, Cardiff | 7,412 |
| 2nd Leg | Wrexham | 1–0 | Cardiff City | Racecourse Ground, Wrexham | 8,000 |
| Play off | Cardiff City | 3–0 | Wrexham | Gay Meadow, Shrewsbury | 7,480 |
| 1965–66 | Swansea Town | 3–0 | Chester | Vetch Field, Swansea | 9,614 |
| 2nd Leg | Chester | 1–0 | Swansea Town | Sealand Road, Chester | 6,346 |
| Play off | Chester | 1–2 | Swansea Town | Sealand Road, Chester | 6,276 |
| 1966–67 | Wrexham | 2–2 | Cardiff City | Racecourse Ground, Wrexham | 11,473 |
| 2nd Leg | Cardiff City | 2–1 | Wrexham | Ninian Park, Cardiff | 8,299 |
| 1967–68 | Hereford United | 0–2 | Cardiff City | Edgar Street, Hereford | 5,422 |
| 2nd Leg | Cardiff City | 4–1 | Hereford United | Ninian Park, Cardiff | 6,036 |
| 1968–69 | Swansea City | 1–3 | Cardiff City | Vetch Field, Swansea | 10,207 |
| 2nd Leg | Cardiff City | 2–0 | Swansea City | Ninian Park, Cardiff | 12,617 |
| 1969–70 | Chester | 0–1 | Cardiff City | Sealand Road, Chester | 3,087 |
| 2nd Leg | Cardiff City | 4–0 | Chester | Ninian Park, Cardiff | 5,567 |
| 1970–71 | Wrexham | 0–1 | Cardiff City | Racecourse Ground, Wrexham | 14,101 |
| 2nd Leg | Cardiff City | 3–1 | Wrexham | Ninian Park, Cardiff | 7,000 |
| 1971–72 | Wrexham | 2–1 | Cardiff City | Racecourse Ground, Wrexham | 6,984 |
| 2nd Leg | Cardiff City | 1–1 | Wrexham | Ninian Park, Cardiff | 6,508 |
| 1972–73 | Bangor City | 1–0 | Cardiff City | Farrar Road, Bangor | 5,005 |
| 2nd Leg | Cardiff City | 5–0 | Bangor City | Ninian Park, Cardiff | 4,679 |
| 1973–74 | Stourbridge | 0–1 | Cardiff City | War Memorial Athletic Ground, Amblecote | 5,726 |
| 2nd Leg | Cardiff City | 1–0 | Stourbridge | Ninian Park, Cardiff | 4,000 |
| 1974–75 | Wrexham | 2–1 | Cardiff City | Racecourse Ground, Wrexham | 6,862 |
| 2nd Leg | Cardiff City | 1–3 | Wrexham | Ninian Park, Cardiff | 3,280 |
| 1975–76 | Hereford United | 3–3 | Cardiff City | Edgar Street, Hereford | 3,709 |
| 2nd Leg | Cardiff City | 3–2 | Hereford United | Ninian Park, Cardiff | 2,648 |
| 1976–77 | Cardiff City | 2–1 | Shrewsbury Town | Ninian Park, Cardiff | 3,178 |
| 2nd Leg | Shrewsbury Town | 3–0 | Cardiff City | Gay Meadow, Shrewsbury | 2,907 |
| 1977–78 | Bangor City | 1–2 | Wrexham | Farrar Road, Bangor | 10,000 |
| 2nd Leg | Wrexham | 1–0 | Bangor City | Racecourse Ground, Wrexham | 13,959 |
| 1978–79 | Wrexham | 1–1 | Shrewsbury Town | Racecourse Ground, Wrexham | 6,174 |
| 2nd Leg | Shrewsbury Town | 1–0 | Wrexham | Gay Meadow, Shrewsbury | 8,889 |
| 1979–80 | Newport County | 2–1 | Shrewsbury Town | Somerton Park, Newport | 9,950 |
| 2nd Leg | Shrewsbury Town | 0–3 | Newport County | Gay Meadow, Shrewsbury | 8,993 |
| 1980–81 | Swansea City | 1–0 | Hereford United | Vetch Field, Swansea | 13,182 |
| 2nd Leg | Hereford United | 1–1 | Swansea City | Edgar Street, Hereford | 7,038 |
| 1981–82 | Cardiff City | 0–0 | Swansea City | Ninian Park, Cardiff | 11,960 |
| 2nd Leg | Swansea City | 2–1 | Cardiff City | Vetch Field, Swansea | 15,828 |
| 1982–83 | Wrexham | 1–2 | Swansea City | Racecourse Ground, Wrexham | 2,295 |
| 2nd Leg | Swansea City | 2–0 | Wrexham | Vetch Field, Swansea | 5,630 |
| 1983–84 | Shrewsbury Town | 2–1 | Wrexham | Gay Meadow, Shrewsbury | 2,607 |
| 2nd Leg | Wrexham | 0–0 | Shrewsbury Town | Racecourse Ground, Wrexham | 3,148 |
| 1984–85 | Shrewsbury Town | 3–1 | Bangor City | Gay Meadow, Shrewsbury | 1,507 |
| 2nd Leg | Bangor City | 0–2 | Shrewsbury Town | Farrar Road, Bangor | 1,800 |
| 1985–86 | Wrexham | 1–1 | Kidderminster Harriers | Racecourse Ground, Wrexham | 5,035 |
| Replay | Kidderminster Harriers | 1–2 | Wrexham | Aggborough, Kidderminster | 4,304 |
| Season |
Winner |
Score |
Runner-up |
Venue |
Attendance |
| 1986–87 | Merthyr Tydfil | 2–2 | Newport County | Ninian Park, Cardiff | 7,000 |
| Replay | Merthyr Tydfil | 1–0 | Newport County | Ninian Park, Cardiff | 6,010 |
| 1987–88 | Cardiff City | 2–0 | Wrexham | Vetch Field, Swansea | 5,465 |
| 1988–89 | Swansea City | 5–0 | Kidderminster Harriers | Vetch Field, Swansea | 5,100 |
| 1989–90 | Hereford United | 2–1 | Wrexham | National Stadium, Cardiff | 4,182 |
| 1990–91[8] | Swansea City | 2–0 | Wrexham | National Stadium, Cardiff | 5,000 |
| 1991–92 | Cardiff City | 1–0 | Hednesford Town | National Stadium, Cardiff | 10,300 |
| 1992–93 | Cardiff City | 5–0 | Rhyl | National Stadium, Cardiff | 16,443 |
| 1993–94[9] | Barry Town | 2–1 | Cardiff City | National Stadium, Cardiff | 14,500 |
| 1994–95 | Wrexham | 2–1 | Cardiff City | National Stadium, Cardiff | 11,200 |
| 1995–96 | Llansantffraid | 3–3(a.e.t)P | Barry Town | National Stadium, Cardiff | 2,666 |
| 1996–97 | Barry Town | 2–1 | Cwmbran Town | Ninian Park, Cardiff | 1,560 |
| 1997–98 | Bangor City | 1–1(a.e.t)P | Connah's Quay Nomads | Racecourse Ground, Wrexham | 2,023 |
| 1998–99 | Inter CableTel | 1–1(a.e.t)P | Carmarthen Town | Penydarren Park, Merthyr Tydfil | 1,100 |
| 1999–2000 | Bangor City | 1–0 | Cwmbran Town | Racecourse Ground, Wrexham | 1,125 |
| 2000–01 | Barry Town | 2–0 | Total Network Solutions | Racecourse Ground, Wrexham | 1,022 |
| 2001–02 | Barry Town | 4–1 | Bangor City | Park Avenue, Aberystwyth | 2,256 |
| 2002–03 | Barry Town | 2–2(a.e.t) | Cwmbarn Town | Stebonheath Park, Llanelli | 852 |
| 2003–04 | Rhyl | 1–0(a.e.t)P | Total Network Solutions | Latham Park, Newtown | 1,534 |
| 2004–05 | Total Network Solutions | 1–0 | Carmarthen Town | Stebonheath Park, Llanelli | 1,126 |
| 2005–06 | Rhyl | 2–0 | Bangor City | Racecourse Ground, Wrexham | 1,743 |
| 2006–07 | Carmarthen Town | 3–2 | Afan Lido | Stebonheath Park, Llanelli | 946 |
| 2007–08 | Bangor City | 4–2(a.e.t) | Llanelli | Latham Park, Newtown | 1,510 |
| 2008–09 | Bangor City | 2–0 | Aberystwyth Town | Parc y Scarlets, Llanelli | 1,044 |
| 2009–10 | Bangor City | 3–2 | Port Talbot Town | Parc y Scarlets, Llanelli[10] | 1,303 |
| 2010–11 | Llanelli | 4–1 | Bangor City | Parc y Scarlets, Llanelli | 1,719 |
| 2011–12 | The New Saints | 2–0 | Cefn Druids | Nantporth Stadium, Bangor | 731 |
| 2012–13 | Prestatyn Town | 3–1 (a.e.t) | Bangor City | Racecourse Ground, Wrexham | 1,732 |
| 2013–14 | The New Saints | 3–1 | Aberystwyth Town | Racecourse Ground, Wrexham | 1,273 |
| 2014–15 | The New Saints | 2–0 | Newtown | Latham Park, Newtown | 1,579 |
| 2015–16 | The New Saints | 2–0 | Airbus UK Broughton | Glyndwr University Stadium, Wrexham[11] | |