A final da Taça de Portugal chegou empatada ao intervalo mas tanto Sporting como FC Porto poderiam ter marcado mais do que um golo ainda durante os primeiros 45 minutos. Os leões começaram mais pressionantes mas acabaram por permitir a primeira grande ocasião de golo aos dragões, logo ao minuto 6: Bruno Gaspar aliviou mal e colocou a bola nos pés de Otávio, que já no interior da grande área leonina atirou para uma grande defesa de Renan Ribeiro.
Aos dez minutos, Bruno Fernandes respondeu a Otávio e atirou forte e rasteiro de fora de área e em posição frontal para a baliza de Vaná. O guarda-redes brasileiro esticou-se e defendeu para a frente.
No minuto seguinte, foi Raphinha a aproveitar uma bola perdida à entrada da área do FC Porto — depois de um livre batido na direita — para rematar forte mas ao lado da baliza dos dragões.
Aos 23 minutos, o FC Porto conseguiu mesmo bater Renan mas o lance acabou anulado por fora de jogo. Numa jogada algo atabalhoada em que os jogadores do Sporting não conseguiram ganhar os duelos aéreos à entrada da área, Soares descobriu Marega, que dominou, rodou e atirou rasteiro para a baliza dos leões. O árbitro assistente não levantou a bandeirola mas o VAR anulou o golo do FC Porto por posição irregular do avançado maliano na altura do passe de Soares.
Os dragões acabaram mesmo por chegar à vantagem já ao minuto 40, quando Alex Telles bateu um livre na esquerda e Herrera recebeu a tombar na direita e assistiu Soares. O capitão do FC Porto cruzou para o segundo poste, onde apareceu o avançado brasileiro a superiorizar-se a Coates e a bater Renan. Os jogadores do Sporting pediram mão na bola de Herrera mas Jorge Sousa garantiu que o lance era legal.
No último minuto e no último lance da primeira parte, Bruno Fernandes dominou à entrada da grande área depois de uma arrancada de Acuña pela esquerda e atirou na diagonal para o poste mais distante. A bola desviou em Danilo e enganou Vaná, que permitiu o empate dos leões mesmo em cima do intervalo.
Já na segunda parte, Soares foi o protagonista de duas grandes oportunidades para o FC Porto: primeiro atirou ao poste no meio dos centrais após assistência de Marega (48′); depois desenvencilhou-se, novamente a tombar na esquerda, e voltou a rematar à baliza de Renan mas desta vez atirou ao lado (56′).
Do outro lado, foi Wendel a aparecer à entrada da grande área e a rematar na diagonal para a primeira grande ocasião do Sporting na segunda parte (76′).
Depois da grande defesa que fez na primeira parte, Renan quase deitou tudo a perder ao entregar a bola a Herrera à entrada da área. O guarda-redes brasileiro conseguiu emendar e evitou o golo do mexicano (78′). Já no período de descontos, Wilson Manafá rematou, a bola desviou em Danilo e bateu no poste da baliza do Sporting (90+1′).
Já na primeira parte do prolongamento, Bas Dost apareceu ao segundo poste a aproveitar um desvio de Felipe após cruzamento de Acuña e colocou o Sporting em vantagem (101′). Mesmo ao cair do pano, no último lance do prolongamento, Felipe apareceu a concretizar um primeiro cabeceamento de Pepe e levou todas as decisões para as grandes penalidades.