Edoardo Bove fired Roma to a 1-0 win over Bayer Leverkusen in a tight first leg of their Europa League semi-final on Thursday.
Bove scored the only goal of the game in the 63rd minute at the Stadio Olimpico, allowing Jose Mourinho's side to take a slender lead into next week's second leg in Germany.
The win gives Mourinho the chance to reach his second European final in as many years as Roma coach after winning the Europa Conference League last season.
Roma took the win despite having a host of players either out or barely fit to play, with stars Paulo Dybala and Georginio Wijnaldum only coming on in the final 15 minutes to help out an exhausted, largely second-string team.
A turgid first half had little in the way of goalmouth incident, with each team having one good opportunity each.
First Florian Wirtz shot a very presentable chance just wide in the seventh minute after exchanging passes with Adam Hlozek on the edge of the penalty area.
But it was Roma who were wondering how they didn't open the scoring 12 minutes later when Roger Ibanez's header from a Lorenzo Pellegrini free-kick was well-saved by Lukas Hradecky.
And Tammy Abraham failed to tap in from the rebound, leaving the home fans open-mouthed at the latest blunder from their misfiring English striker.
Very little happened between then and when Roma took the lead just after the hour mark, youth product Bove causing an eruption in the stands which up to that point had looked almost impossible.
Bove started the move which led to the goal, charging forward before feeding Abraham whose spin and shot led to the ball falling to the young midfielder, who lashed in the opener.
From there Roma retreated back into their defensive shell, thinking they could hold off Leverkusen.
However they survived a huge scare with three minutes remaining when goalkeeper Rui Patricio and Ibanez ran into one another while trying to clear Wirtz's cross.
The ball dropped for Jeremie Frimpong but the Dutch forward could only fire his shot into Bryan Cristante.
A cascade of whistles came from the stands as fans begged referee Michael Oliver to blow his whistle.
When the Englishman duly obliged, both sides were left still in the running to face either Sevilla or Juventus in the Budapest final.