Roma vond amper openingen tegen de goed georganiseerde troepen van Sergio Conceiçao. Iets voor het halfuur leed verdediger Konstantinos Manolas balverlies, enkele tellen later lag het leer in het Romeinse doel. In de 36e minuut stopte Eder Militao Diego Perotti foutief af in de zestien, waarna kapitein Daniele De Rossi de bordjes weer in evenwicht bracht vanop de stip. Enkele minuten later testte Hector Herrera de vuisten van doelman Robin Olsen. Op slag van rust moest De Rossi het veld geblesseerd verlaten: een stevige aderlating voor de Giallorossi.

Tien minuten na de pauze lag de Romeinse bonus aan diggelen toen Moussa Marega uit de rug van de onoplettende Roma-defensie wegglipte om een strakke voorzet in doel te werken. Het slot ging op de wedstrijd, beide ploegen wachtten het laatste kwartier af om het laken finaal naar zich toe te trekken. In dat slot verkwanselde Diego Perotti nog een huizenhoge kans voor Roma.

In de verlengingen kreeg Edin Dzeko tot driemaal toe de kans om het lot van Porto te bezegelen. De Bosniër stormde in de 102e minuut alleen op Iker Casillas af, maar die laatste won het pleit. In de 112e minuut kapte Dzeko Felipe uit, om vervolgens wild over te besluiten. Enkele minuten later zag hij een bal richting doel nog van de lijn gekeerd door een verdediger. Vijf minuten voor het eindsignaal kregen de Romeinen een ijskoude douche te verwerken: de scheidsrechter zag op aangeven van de VAR een trekfout van Alessandro Florenzi in de Romeinse zestien en wees naar de stip. Alex Telles zette de elfmeter om en bezorgde Porto het delirium. In blessuretijd leek de VAR alsnog roet in het eten te gooien door een lichte tik van Marega te signaleren in de Portugese zestien, maar ditmaal volgde de scheidsrechter niet.