Nicolo Zaniolo scored twice as Roma edged the first leg of their Champions League last-16 clash against Porto 2-1 at Stadio Olimpico.
There had been little to chose between the sides during the first half, with Edin Dzeko seeing his shot come back off the post.
The Bosnian played a part in breaking the deadlock on 70 minutes when he laid the ball off for Zaniolo to drill the ball in at the far post.
Zaniolo struck another on 76 minutes after Dzeko had again hit the woodwork.
Porto, though, set up a tense finale and gave themselves something to take into the return leg at Estadio do Dragao on March 6 when Lopez Adrian fired in a half-volley with 11 minutes to go.
Both sides had seen plenty of possession during the opening stages, if without making much of an impact in the final third.
On 12 minutes, Dzeko broke clear and played a dangerous ball into the Porto area, which defender Augusto Felipe almost put into his own net.
As the half-hour mark approached, Lorenzo Pellegrini tested Porto keeper Iker Casillas from the edge of the penalty area.
Just before the break, Dzeko was unfortunate not to break the deadlock when he cut back inside from the left of the box and sent an angled drive goalwards, which crashed against the near post.
Casillas was called upon again early in the second half when he punched Bryan Cristante's effort.
At the other end, Porto midfielder Danilo Pereira sent his effort just wide at the near post from a corner.
Pellegrini forced Casillas into another decent stop before things got heated on touchline as the hour mark passed following a strong challenge on Porto's Yacine Brahimi – with coaches from both sides having to be separated.
Roma, though, were soon celebrating as Zaniolo broke the deadlock on 70 minutes following more good work by Dzeko, who turned on the penalty spot before laying the ball off.
The Serie A side, runners-up in Group B behind Real Madrid doubled their lead just six minutes later, Casillas pushing Dzeko's 25-yard shot onto the post, with Zaniolo slotting into an empty net.
Porto, who had won Group D, made some positive tactical changes and got themselves back into the tie when Lopez produced a cool finish after Francisco Soares' sliced effort dropped to him in the Roma penalty area.
The Stadio Olimpico faithful were set for a tense finish, and Hector Herrera curled a shot just wide from the edge of the box.
In stoppage time, Roma defender Aleksandar Kolarov saw his angled shot saved by Casillas having been played in on the overlap down the left.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', 'db3e8fa4-fa36-47a0-95f8-69c44007364d');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:football,paservice:sport:match-reports,paservice:sport:world');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Nicolo Zaniolo brace edges Roma to victory in first leg with Porto'});