Alex Telles scored an extra-time penalty following a VAR review to send Porto through to the Champions League quarter-finals at the expense of Roma.
Alessandro Florenzi was penalised for dragging Fernando back when the ball was fizzed across the goal in the 116th minute and Telles emphatically converted from the spot.
Porto’s Moussa Marega took the game to extra time when he got on the end of Jesus Corona’s curling cross.
Roma captain Daniele de Rossi had earlier cancelled out Francisco Soares’ opener for Porto in the first half.
It is the first time the Portuguese club have reached the quarter-finals since 2014-15.