The visitors arrived in Rome with a 6-2 aggregate lead from the first leg in Manchester, but Ole Gunnar Solskjaer still fielded a strong XI despite the lopsided nature of the tie.
Edinson Cavani, who had missed an easy chance early in the match, made no mistake with his next opportunity just before half-time, smashing a shot past Antonio Mirante in the Roma goal to give United a lead at the break.
"It's a great achievement to get to the final. We didn't win the game and that's disappointing but we did the hard work in the first leg," United captain Harry Maguire told BT Sport.
"We started the game a bit edgy. It was end-to-end like basketball and we gave them too many chances in second half. Now we've got to go to the final and win it."
Roma took the lead with back-to-back goals before the hour mark when Edin Dzeko headed home from point-blank range to draw the match level and Bryan Cristante gave the hosts the lead with a nice shot from the top of the penalty area.
Cavani put United back on level terms soon after, but Roma refused to give up the fight and were back in the lead when Nicola Zalewski's shot from a tight angle found its way into the back of the net.
The aggregate score could have been much closer than it ended up being, with Man United having David De Gea to thank repeatedly for a collection of impressive saves throughout the match.
Solskjaer's team had tripped up in the semifinals of two League Cups, the FA Cup and the Europa League since he succeeded Jose Mourinho in December 2018, but another exit never looked likely in the Italian capital.
Earlier this week Mourinho, who led United to their last trophy by winning the Europa League in 2017, was surprisingly named as Roma's new coach from next season.
"We had some great European nights this season, with some big wins. It's a pity for that second half in Manchester," Crstante said after the match.
"Tonight we still had a few goals to score, but we exit the competition with our heads held high."