The Rome side have now reached back-to-back European finals under coach Jose Mourinho following last season's Europa Conference League title.
The visitors were on the backfoot for the entire game and had to survive intense pressure from the Germans, who missed a lot of chances and also hit the woodwork, as they advanced thanks to last week's 1-0 win in Italy.
It all started well for Leverkusen, looking to reach their first European final in 21 years.
Apart from a second minute chance for Roma's Lorenzo Pellegrini, the hosts had the upper hand in the first half with a dozen efforts on goal compared to their opponents' one.
The visitors tried to push up a bit higher in the second half to intercept Leverkusen's attacks earlier but the hosts kept finding ways to create chances.
Demirbay forced another good save in the 67th from Patricio, who thought he was beaten by Sardar Azmoun minutes later only for the Iranian's shot to sail just wide.
Leverkusen, whose last major title dates back to 1993, had 23 efforts on goal but it was Mourinho's Roma that went through even if they had just the one effort on goal in the entire game.
"All that was missing was a goal," said Leverkusen's Demirbay. "We did not have that bit of luck. It was bitter not to be rewarded for such a performances. But I am proud of the way we played."
- Slavko Vincici