The 2003–04 Taça de Portugal was the 64th edition of the Portuguese football knockout tournament organized by the Portuguese Football Federation (FPF). This edition of the Taça de Portugal began on 7 September 2003, and concluded on 16 May 2004 with the final at the Estádio Nacional.

Porto were the previous holders, having defeated União de Leiria 1–0 in the previous season's final. Benfica defeated Porto 2–1 in the final to win their 24th Taça de Portugal, dedicated to Miklós Fehér. Benfica's cup success would gain them qualification to the 2004 Supertaça Cândido de Oliveira.

Format and schedule Round Date(s) Clubs entering this round Clubs from the previous round Clubs involved Fixtures First round 7 September 2003 137 clubs competing in the Terceira Divisão and Portuguese District Leagues none 137 68 Second round 28 September 2003 54 clubs competing in the Segunda Divisão 68 winners from the first round 124 62 Third round 11–12 October 2003 18 clubs competing in the Liga de Honra 62 winners from the second round 80 40 Fourth round 22–23 November 200318 clubs competing in the Primeira Liga 40 winners from third round 58 29 Fifth round 17 December 2003 none 29 winners from fourth round 29 14 Sixth round 14 January 2004 none 14 winners from fifth round 15 7 Quarter-finals 11 February 2004 none 7 winners from sixth round 8 4 Semi-finals 16–17 March 2004 none 4 winners from the quarterfinals 4 2 Final 16 May 2004 none 2 winners from the semifinals 2 1 1.  As many as 116 of the 118 teams competing in the 2003–04 Terceira Divisão played in this round. Benfica B were unable to compete in the domestic cup competition due to the possibility of encountering their senior side in the competition. Queluz also did not participate. 2.  Out of the 59 teams competing in the 2003–04 Segunda Divisão, 54 played in this round. Académica de Coimbra B, Braga B, Marítimo B, Porto B and Sporting CP B were unable to compete in the domestic cup competition due to the possibility of encountering their senior side in the competition. Queluz also did not participate.

Teams

Primeira Liga

Académica de Coimbra Alverca Beira-Mar Belenenses Benfica Boavista Braga Estrela da Amadora Gil Vicente

Marítimo Moreirense Nacional Paços de Ferreira Porto Rio Ave Sporting CP União de Leiria Vitória de Guimarães

Liga de Honra

Chaves Desportivo das Aves Estoril Feirense Felgueiras Leixões Maia Marco Naval Ovarense

Penafiel Portimonense Rabo de Peixe Salgueiros Santa Clara Sporting da Covilhã União da Madeira Varzim Vitória de Setúbal

Second Division North Zone

Bragança Caçadores das Taipas Dragões Sandinenses Ermesinde Fafe Freamunde Gondomar Infesta Leça

Lixa Lousada Paredes Pedras Rubras Trofense Valdevez Vilanovense Vizela

Central Zone

Académico de Viseu Águeda Alcains Caldas Esmoriz Estarreja Fátima Marinhense Oliveira do Bairro Oliveira do Hospital

Oliveirense Pampilhosa Portomosense Sanjoanense Sporting de Espinho Sporting de Pombal Torreense União de Lamas Vilafranquense

South Zone

Amora Barreirense Camacha Estrela Vendas Novas Farense Louletano Lusitânia Mafra Odivelas

Olhanense Olivais e Moscavide Oriental Pinhalnovense Pontassolense Ribeira Brava Santo António Sintrense União Micaelense

Third Division Série A

Amares Cabeceirense Cerveira Esposende Joane Juventude de Ronfe Maria da Fonte Mirandela Monção

Montalegre Os Sandinenses Ponte da Barca Rebordelo Santa Maria Valenciano Valpaços Vianense Vilaverdense

Série B

AD Oliveirense Aliados Lordelo Canelas Cinfães Famalicão Fiães Lourosa Nogueirense Paços de Brandão

Pedrouços Rebordosa Régua Ribeirão Rio Tinto São Pedro da Cova Tirsense Torre de Moncorvo Vila Real

Série C

Aguiar da Beira Anadia Arouca Arrifanense Cesarense Fornos de Algodres Gafanha Mangualde Milheiroense

Penalva do Castelo Santacombadense São João de Ver Sátão Social Lamas Tocha Tourizense União de Coimbra Valecambrense

Série D

Abrantes Alcobaça Alqueidão da Serra Atlético Riachense Benfica Castelo Branco Beneditense Bidoeirense Caranguejeira Fazendense

Idanhense Lourinhanense Mirense Peniche Rio Maior Sertanense Sourense Torres Novas União Almeirim

Série E

1º de Dezembro Alcochetense Benavilense Câmara de Lobos Carregado Casa Pia Loures Machico

Malveira Montijo O Elvas Portosantense Sacavenense Santacruzense Santana Vialonga

Série F

Almancilense Atlético CP Beira-Mar de Monte Gordo Desportivo de Beja Esperança de Lagos Fabril Barreiro Imortal Juventude de Évora Lusitano VRSA

Messinense Monte Trigo Moura Quarteirense Seixal Sesimbra Silves União Santiago Vasco da Gama AC

Série Azores

Angrense Barreiro Boavista Flores Madalena Mira Mar

Operário Praiense Santiago Sporting de Ideal Velense

District Leagues

Águias de Alpiarça Águias do Moradal Atei Avintes Bombarralense CF Vasco da Gama Eléctrico Estrela da Calheta Fayal Ginásio Figueirense

Lagoa Macedo de Cavaleiros Moitense Neves Os Leões Paivense Penelense UD Valonguense União de Montemor União Torcatense

First round For the first round draw, teams were drawn against each other in accordance to their geographical location. The draw was split up into four sections: teams from the north, the center, the south and the Azores region. All first round cup ties were played on the 7 September. Due to the odd number of teams at this stage of the competition, Rabo de Peixe progressed to the next round due to having no opponent to face at this stage of the competition. The first round of the cup saw teams from the Terceira Divisão (IV) start the competition alongside some teams who registered to participate in the cup from the Portuguese District Leagues (V).

North Zone

Home teamScoreAway team AD Oliveirense 3–2 Joane Atei 0–1 Amares Avintes 2–0 Ponte da Barca Cabeceirense 4–1 Macedo de Cavaleiros Canelas 2–3 Neves Cerveira 1–3 (aet) Pedrouços Cinfães 3–0 Régua Esposende 5–0 Paivense Famalicão 4–3 Aliados Lordelo Juventude de Ronfe 1–3 Mirandela Monção 1–2 Vilaverdense

Home teamScoreAway team Os Sandinenses 2–0 Valpaços Paços de Brandão 2–2 (aet, p. 4–2) Fiães Rebordelo 0–2 Montalegre Rebordosa 0–0 (aet, p. 5–3) Rio Tinto Ribeirão 4–2 Tirsense Santa Maria 3–0 União Torcatense São Pedro da Cova 1–1 (aet, p. 4–5) Vianense Torre de Moncorvo 1–0 Maria da Fonte Valenciano 0–1 Nogueirense Vila Real 0–0 (aet, p. 5–4) Lourosa

Central Zone

Home teamScoreAway team Águias Alpiarça 2–2 (aet, p. 5–4) Cesarense Aguiar da Beira 5–2 (aet) Atlético Riachense Alqueidão da Serra 0–4 Benfica Castelo Branco Anadia 4–1 Águias do Moradal Arouca 2–0 União Almeirim Arrifanense 1–0 Bombarralense Bidoeirense 4–3 Caranguejeira Fornos de Algodres 0–0 (aet, p. 4–5) Abrantes Gafanha 2–1 (aet) Valecambrense Idanhense 2–1 (aet) Tourizense Lourinhanense 1–1 (aet, p. 5–4) Beneditense

Home teamScoreAway team Mangualde 2–2 (aet, p. 3–5) Sourense Milheiroense 2–1 Ginásio Figueirense Mirense 2–3 Alcobaça Penalva do Castelo 1–0 Fazendense Penelense 2–3 (aet) Tocha Peniche 3–4 (aet) São João de Ver Rio Maior 2–0 Torres Novas Sátão 3–1 União de Coimbra Sertanense 0–1 UD Valonguense Social Lamas 1–1 (aet, p. 3–4) Santacombadense

South Zone

Home teamScoreAway team Beira-Mar de Monte Gordo 0–1 1º de Dezembro Câmara de Lobos 3–1 Sacavenense Carregado 2–3 Fabril Barreiro CF Vasco da Gama 2–1 Benavilense Desportivo de Beja 1–2 (aet) Portosantense Eléctrico 3–1 Olivais Estrela da Calheta 2–0 Lagoa Imortal 3–0 O Elvas Loures 1–1 (aet, p. 5–4) Alcochetense Lusitano VRSA 0–1 Real

Home teamScoreAway team Messinense 0–2 Atlético CP Monte Trigo 1–0 Almancilense Montijo 4–2 Esperança de Lagos Quarteirense 2–0 Moura Seixal 2–1 (aet) Machico Sesimbra 4–1 Vialonga Silves 7–1 Santacruzense União de Montemor 1–2 Santana União de Santiago 3–0 Juventude de Évora Vasco Gama AC 0–1 Moitense

Azores Zone

Home teamScoreAway team Barreiro 5–1 Fayal Madalena 2–1 Os Leões Mira Mar 0–3 Operário

Home teamScoreAway team Praiense 3–1 Santiago Sporting de Ideal 3–1 Boavista Flores Velense 1–2 Angrense

Second round For the second round draw, teams were drawn against each other in accordance to their geographical location. The draw was split up into three sections: teams from the north, the center and the south. Ties were played on the 28 September. The second round saw teams from the Portuguese Second Division (III) enter the competition.

North Zone

Home teamScoreAway team Avintes 6–0 Neves Bragança 3–0 Ribeirão Cabeceirense 2–1 (aet) Dragões Sandinenses Os Sandinenses 1–2 Caçadores das Taipas Ermesinde 1–3 Amares Freamunde 1–0 Vila Real Gondomar 0–2 Santa Maria Infesta 2–0 Vilaverdense Leça 5–1 (aet) Montalegre

Home teamScoreAway team Lixa 3–0 AD Oliveirense Nogueirense 6–2 (aet) Lousada Paredes 3–0 Rebordosa Pedras Rubras 1–1 (aet, p. 5–4) Vilanovense Pedrouços 1–0 F.C. Vizela Torre de Moncorvo 3–1 Mirandela Trofense 1–1 (aet, p. 3–4) Famalicão Valdevez 3–1 (aet) Esposende Vianense 1–3 (aet) Fafe

Central Zone

Home teamScoreAway team Académico de Viseu 4–1 Tocha Alcains 1–0 (aet) Torreense Alcobaça 1–3 Oliveirense Abrantes 2–3 Penalva do Castelo Bidoeirense 1–6 Rio Maior Idanhense 0–2 Cinfães Lourinhanense 3–1 Benfica Castelo Branco Marinhense 2–1 Águeda Milheiroense 0–0 (aet, p. 1–3) União de Lamas Oliveira do Bairro 1–5 Caldas Paços de Brandão 1–0 Águias de Alpiarça

Home teamScoreAway team Pampilhosa 1–1 (aet, p. 3–1) Anadia Portomosense 3–3 (aet, p. 5–3) Arouca Sanjoanense 3–0 Aguiar da Beira Santacombadense 3–3 (aet, p. 3–4) Esmoriz São João de Ver 3–1 Arrifanense Sátão 1–0 Oliveira do Hospital Sourense 2–0 Gafanha Sporting de Espinho 1–0 Sporting de Pombal UD Valonguense 1–2 Fátima Vilafranquense 1–0 Estarreja

South Zone

Home teamScoreAway team 1º de Dezembro 3–1 Monte Trigo Amora 2–0 Fabril Barreiro Barreirense 4–1 Imortal Barreiro 1–0 Sintrense Câmara de Lobos 4–1 Operário CF Vasco da Gama 2–2 (aet, p. 3–2) Quarteirense Estrela Vendas Novas 2–1 União Micaelense Farense 3–0 Praiense Louletano 1–0 Estrela da Calheta Loures 2–1 Oriental Lusitânia 2–0 Portosantense Madalena 0–1 Atlético CP

Home teamScoreAway team Mafra 2–0 Montijo Moitense 1–1 (aet, p. 4–3) Camacha Odivelas 4–2 Pontassolense Olhanense 5–1 Angrense Pinhalnovense 1–0 Olivais e Moscavide Rabo Peixe 1–2 (aet) Eléctrico Real 1–3 Seixal Ribeira Brava 1–1 (aet, p. 2–4) Santiago Santana 2–4 (aet) Casa Pia Santo António 1–1 (aet, p. 3–2) Silves Sesimbra 4–5 Sporting de Ideal

Third round The draw for the third round took place on the 2 October. Ties were played on the 11–12 October. The third round saw teams from the Liga de Honra (II) enter the competition.

Home teamScoreAway team Estoril 2–0 Penalva do Castelo Felgueiras 5–0 Santa Maria 1º de Dezembro 1–0 Amora Atlético CP 1–0 (aet) Barreirense Bragança 2–4 Leça Caldas 2–3 Paredes Câmara de Lobos 2–1 Famalicão CF Vasco da Gama 2–9 Maia Estrela Vendas Novas 1–3 Lourinhanense Fafe 4–0 Esmoriz Fátima 3–1 Alcains Feirense 1–0 Caçadores das Taipas Freamunde 2–1 Mafra Infesta 4–1 Académico de Viseu Lixa 1–1 (aet, p. 2–3) Vitória de Setúbal Louletano 1–1 (aet, p. 6–5) Santa Clara Lusitânia 5–5 (aet, p. 4–5) Oliveirense Marco 2–1 Torre de Moncorvo Marinhense 1–2 (aet) Cinfães Moitense 0–4 Sporting da Covilhã

Home teamScoreAway team Naval 2–2 (aet, p. 5–4) Chaves Nogueirense 4–1 Cabeceirense Odivelas 0–1 Sourense Olhanense 1–3 (aet) Salgueiros Ovarense 2–0 Farense Paços de Brandão 1–0 Amares Pampilhosa 2–4 Desportivo das Aves Pedrouços 4–3 (aet) Pedras Rubras Penafiel 2–0 Sporting de Espinho Portomosense 5–0 Eléctrico Rio Maior 2–2 (aet, p. 2–3) Casa Pia Sanjoanense 3–1 (aet) Pinhalnovense Santo António 2–0 Avintes Sátão 0–3 Leixões Seixal 1–2 Portimonense Sporting Ideal 1–4 São João de Ver União da Madeira 3–0 Loures União de Lamas 4–1 Barreiro Vilafranquense 2–0 Valdevez Varzim 3–1 Santiago