. AFP/MIGUEL RIOPA
Francisco Soares nudged Porto ahead with a simple tap-in on 26 minutes, but Daniele De Rossi equalised from the spot before half-time after Eder Militao chopped down Diego Perotti.
Moussa Marega restored the lead on the night for Porto early in the second half to level the tie as he struck in his sixth successive appearance in Europe.
An additional half-hour was required to settle an encounter that looked to be heading for a shootout before Telles tucked home from the spot on 117 minutes after a tug on Fernando by Alessandro Florenzi was spotted upon review.
Porto coach Sergio Conceicao, a former player at Roma’s city rivals Lazio, had expressed the need for patience as his side set about attempting to retrieve a 2-1 deficit.
Yet they threatened twice inside the opening 10 minutes at the Estadio do Dragao as Jesus Corona hammered a volley narrowly over, with Telles lashing into the side-netting from a tough angle.
Corona again tried his luck from range, his shot again dipping over the top, and the Mexico winger was once more involved as Soares poked in the opening goal.
Marega, back in the side after missing the first leg with a thigh injury, pinched the ball from Kostas Manolas and was then picked out by Corona on the overlap to square for Soares to slot home.
Porto’s lead lasted barely 10 minutes as Eder Militao lunged in on Argentine Perotti, with De Rossi coolly rolling his penalty past three-time Champions League winner Iker Casillas.
– Marega catches Messi –
Porto captain Hector Herrera, who was booked and will miss the quarter-final first leg, tested Robin Olsen with a bending effort just before the break when Roma lost skipper De Rossi following a crunching tackle by Danilo.
Soares should have netted a second when his downward header skipped off the ground and flashed over the bar, while Olsen produced a superb fingertip save to claw out a Marega strike.
Olsen was powerless to stop France-born Mali international moments later though as Marega timed his run perfectly to volley Corona’s curling cross into the roof of the net.
Marega is now level with Lionel Messi and Dusan Tadic with six goals in this season’s tournament.
Pepe and Edin Dzeko were both booked following a clash near midfield, a caution that also rules the Portuguese defender out of his side’s next match in the competition.
A dreadful Pepe error then presented Perotti with an opportunity he failed to exploit, while Otavio tested Olsen from distance towards the end of the 90 minutes.
Marega went agonisingly close to scoring again early into extra time, while Dzeko dinked the ball over Casillas only for Pepe to race back and clear off the line.
With penalties seemingly on the horizon, Porto grabbed a dramatic winner after Turkish referee Cuneyt Cakir pointed to the spot, after reviewing an incident in which Florenzi hauled back Fernando as the substitute stretched to reach a driven low cross.
Telles sent Olsen the wrong way to fire Porto into their first quarter-final since 2014-15, although the hosts faced an anxious wait after Patrik Schick tumbled to the ground in the area before Cakir ruled there was no foul.
Download our app and read this and other great stories on the move. Available for Android and iOS.