Florian Wirtz and Robert Andrich scored the goals for Xabi Alonso's side, who are now in a strong position to reach the final of the competition against either Atalanta BC or Marseille.
The breakthrough came in the 28th minute through Wirtz, before Andrich hit a stunner in the 73rd minute, and there was to be no response from Roma despite having the majority of the possession.
The game's first attempt on target arrived in the 11th minute, with Roma's Paulo Dybala testing Leverkusen goalkeeper Matej Kovar, who was on hand to make a smart save.
Romelu Lukaku then rattled the crossbar with a header, with the home side looking the more likely, but Leverkusen were a threat on the counter, with Jeremie Frimpong hitting the side-netting from a narrow angle.
Leverkusen in a strong position ahead of second leg
The visitors made the breakthrough in the 28th minute, though, with Alex Grimaldo delivering a cross into Wirtz, who carefully placed the ball into the bottom corner.
Poor defending from Rick Karsdorp allowed Grimaldo time and space inside the penalty box, and the left-back was never going to pass up the opportunity to put one on a plate for his teammate.
Frimpong arrowed one just wide of Svilar's post in the period that followed, as Leverkusen looked for a second, but just the one goal separated the two teams at the half-time interval in Rome.
Leverkusen had 11 goal attempts in the opening half of the clash, with Roma managing four, and the Bundesliga outfit also started the second period on the front foot.
Roma only managed two shots on target during tough night
Piero Hincapie headed over early in the second half, and the crowd were doing their best to raise the Roma performance, as the hosts were struggling to get into their passing rhythm.
Bryan Cristante should have levelled in the period that followed, but he headed a Dybala corner wide of the post from close range, and the home side were made to pay for the missed opportunity.
Indeed, Leverkusen's lead became 2-0 in the 73rd minute, with Andrich picking out the back of the net from distance, placing the Bundesliga champions in a very strong position in the tie.
Leverkusen's unbeaten run in all competitions this season has been stretched to 47 games, with misses from Lukaku and Cristante proving to be crucial for Roma, who have it all to do in the second leg of the semi-final in Germany next week.