Le FC Porto battu à domicile par Benfica et l'AS Rome humiliée dans le derby par la Lazio devaient faire oublier ces échecs à leurs supporters. Bon signe: il n'y a pas eu de match nul à Porto en Ligue des Champions depuis décembre 2011. Les Dragons ont pris l'initiative alors que le bloc romain, en phase défensive, se présentait en 5-4-1. Sur leur premier tir cadré, les Portugais ont ouvert la marque par Tiquinho Soares dans une position à la limite du hors jeu, qui a nécessité le recours au VAR (24e, 1-0). Les Romains ont fini par mettre la pression à l'adversaire dans leur moitié de terrain. Suite à une faute d'Eder Militao sur Diego Perotti, l'arbitre a accordé un penalty que Daniele De Rossi a transformé (36e, 1-1). La suite allait être moins heureuse pour le capitaine romain sorti sur blessure (45e+4).

A la reprise, les Dragons ont mis le feu dans les 25 derniers mètres romains. Sur un ballon mal dégagé, Jesus Corona a pris la défense italienne de court et a donné le ballon à Moussa Marega, qui a mis le pied (52e, 2-1). Les deux équipes ont fait preuve de beaucoup d'engagement mais les combinaisons les plus intéressantes étaient dessinées par les Portugais. Ainsi Felipe a manqué une tête au deuxième poteau (66e) et Yacine Brahimi a vu sa reprise de volée renvoyée par Robin Olsen (77e). Côté romain, Perotti n'a pas profité d'un cadeau de Pepe et a totalement manqué sa reprise du droit (82e).

Les Portugais sont sont montrés plus énergiques au début de la première prolongation alors que l'AS Rome devait faire face à un nouveau coup dur avec la sortie de Lorenzo Pellegrini, touché à la cuisse droite (95e). Cela n'a pas empêché les Romains de bien réagir dans les cinq dernières minutes par Perotti et Alessandro Florenzi.

Dans le dernier quart d'heure, les Romains auraient pu faire la différence par Edin Dzeko, qui a loupé deux énormes occasions. Sur le première, le Bosnien a manqué son tir alors qu'il s'était retrouvé seul face à Iker Casillas à l'entrée des six mètres (11e) et sur la seconde, décalé seul sur la gauche, il n'a pas piqué son ballon (112e). L'AS Rome avait laissé sa chance. Sur indication du VAR, l'arbitre a sifflé un penalty pour Porto qu'Alex Telles a thésaurisé (117e, 3-1).