Com Otávio no lugar de Brahimi, e Militão e Soares de volta ao onze, o FC Porto apenas precisava de um golo para o sonho da Champions continuar (relembre-se que em Roma os italianos ganharam 2-1, com bis de Zaniolo. Adrián Lopéz marcou o golo portista).

Aos 2 minutos Alex Telles cruzou para a área, mas Juan Jesus fez o corte para canto. Telles foi chamado a cobrir o canto, Corona recebeu, rematou mas foi muito por cima. Mais tarde foi a vez de Otávio mostrar que o seu lugar no onze foi merecido. Depois de Militão sair a jogar com toda a velocidade, deixa para o médio portista que cruzou, mas Olsen defendeu.

O As Roma foi tentando o que podia e criava algumas jogadas de perigo no contra-ataque, porém a defesa portista mostrava-se sempre atenta.

Ao bater dos dez minutos da primeira parte, Danilo consegue uma recuperação de bola e saiu disparado em direção à área. Pelo caminho, deixou a bola para Corona que tentou o remate, mas bateu num jogador adversário. Telles tenta a recarga, mas atira ao lado, deixando alguns adeptos a gritar golo.

O FC Porto ao longo da primeira parte mostrou sempre um jogo intenso, causando dificuldades à equipa adversária que raramente conseguia passar do meio campo. Numa das poucas visitas à área de Casillas, Manolas, depois de conseguir encontrar espaço na área, remata com toda a força e esperança, mas Soares estava atento e conseguiu o corte para canto.

Aos 26 minutos Tiquinho Soares abre o marcador. Corona conduziu a bola até à área, deixa para Marega que não foi invejoso e facilitou tudo a Soares, tento apenas de encostar. O arbitro ainda recebeu indicações do VAR por um possível fora de jogo, mas acabou por validar. 1-0 para a equipa da casa e a eliminatória virava a seu favor. 

A Roma tentou reagir rápido e ao bater da primeira meia hora Dzenko remata de primeira, mas a bola atingiu Marega e saiu para canto. Seis minutos mais tarde, surgia mesmo o golo do empate. Militão derruba Perotti na área, Çakir marca grande penalidade. De Rossi é chamado a bater e não desperdiçou. A Roma foi para intervalo com a eliminatória a seu favor e com a primeira substituição esgotada, depois de Rossi ser obrigado a sair por lesão, o que obrigou a uma paragem de jogo e Danilo viu amarelo por protestos. Pellegrini entrou para o seu lugar.

As equipas voltaram a jogo e o FC Porto não esperou mais. Marega aumentou a vantagem para 2-1. Corona recupera a bola na esquerda, cruza à frente de Karsdorp que nada conseguiu fazer, pois Marega surgiu sem marcação e apenas teve de encostar para o fundo das redes. Logo depois, Alex Telles tentou o terceiro, mas a bola ficou na barreira criada pelos italianos. A eliminatória estava, assim, empatada.

Pepe e Dzeko desentenderam-se, trocaram argumentos mais pesados e acabaram com um encoste de cabeças. O capitão da Roma deixou-se cair na busca pela falta, mas acabaram os dois por ver o cartão amarelo. Pepe juntava-se assim a Herrera, ambos de fora no próximo jogo europeu, por acumular de amarelos. 

O ambiente no Dragão estava fantástico e o FC Porto não tinha ideias de desiludir os seus adeptos. Ao longo da segunda parte conseguiu manter o jogo que apresentou desde o início, com uma pressão elevada e a Roma continuava com as mesmas dificuldades, principalmente por não se conseguir livrar dessa pressão. 

Aos 66 minutos Alex Telles bateu o canto, Felipe subiu, cabeceou mas a bola foi muito por cima da baliza. Dois minutos mais tarde, e numa perda de bola de Danilo, Dzeko recupera, mas atira ao lado.

Ao chegar aos 10 minutos finais do tempo regulamentar, Oslen faz uma grande defesa. Otávio recupera a bola, ganha espaço e atira de longe, para defesa do guardião com as pernas. Ao bater dos 90 minutos chegou aquela que foi a melhor oportunidade da Roma até então. Pepe derruba Dzeko em falta e ganha um livre perigoso. Kolarov é chamado a bater, mas a bola fica pela barreira.

O prolongamento começou e Marega falhou por pouco! Alex Telles fez um cruzamento rasteiro para Marega que apenas tinha de encostar, mas a bola saiu ligeiramente por cima.

O cansaço começava a fazer-se notar nas duas equipas, ainda assim o FC Porto continuava melhor a nível físico. 

A meio da primeira parte chegaram aquelas que foram as melhores oportunidades da Roma ao longo da primeira parte do prolongamento. Dzeko ultrapassa Felipe, fica cara a cara com Casillas, mas a bola passa por cima. Logo depois, e com um fantástico passe de Cristante para Dzeko, este pica a bola sobe Casillas, mas Pepe aparece e corta na entrada da baliza.

A Roma mostrou-se melhor na segunda parte do prolongamento, mas a sorte ficou para os azuis e brancos. Florenzi puxa Fernando Andrade na área e o portista caí a pedir falta. O arbitro recebe indicações do VAR, vai mesmo ver as imagens e acaba por marcar grande penalidade. Alex Telles foi chamado a bater e não desperdiçou. O FC Porto estava, assim, nos quartos de final da Champions League.

Antes do apito final ainda houve tempo para outra intervenção do VAR. Zaniolo caí na área e fica a pedir falta de Marega, por um possível toque no pé. Mas o VAR considerou não haver falta e mandou seguir.