The hosts started brightly and should have taken the lead as Gianluca Mancini, Lorenzo Pellegrini and Henrikh Mkhitaryan all squandered chances, only for Edinson Cavani to blast United ahead late in the first half.
And while there was still time for Nicola Zalewski to snatch an unlikely 82nd-minute winner, United comfortably held on to progress 8-5 on aggregate.
When they were in control United were brilliant. Both Cavani and David De Gea produced outstanding performances, and United now have a real chance of ending the campaign with silverware.
How did United lose this one? Had the likes of Mancini, Pellegrini and Mkhitaryan struck gold when they really should have, this could have been a much tighter affair, and De Gea had to rescue his side on multiple occasions as the Red Devils threatened to capitulate after the break.
Manager rating out of 10
6 -- Ole Gunnar Solskjaer named a strong lineup despite his side's 6-2 advantage and that proved to be the right decision as the visitors showed resilience to weather a storm before taking control. One knock against him was that his introductions of Brandon Williams and Alex Telles invited trouble.
Player ratings (1-10; 10 = best, players introduced after 70 minutes get no rating)
GK David De Gea, 9 -- Outstanding. Spared his sides blushes with a stunning, instinctive save inside of three minutes to keep the sides level, and he produced an abundance of stunning stops to thwart Pellegrini, Mkhitaryan and Pedro in particular.
DF Aaron Wan-Bissaka, 6 -- The energetic full-back saw yellow with just 18 minutes on the clock after a challenge that sent Bruno Peres tumbling over the top of him like an Olympic gymnast. Flashed a dangerous cross across the face of goal as United looked for the kill.
DF Eric Bailly, 5 -- Presented the hosts with their first opportunity of the game when he was penalised for a clash of heads with Mkhitaryan, and that almost led to the opening goal. Looked nervous as Roma brought the fight in the second half. One to forget for the Ivorian.
DF Harry Maguire, 7 -- The United skipper wasn't pleased with the officials who failed to pull up Mancini for handball, but he put his body on the line as United somehow scrambled the ball to safety. Later produced a series of towering headers.
DF Luke Shaw, 6 -- Caught napping early on by his opposite number Rick Karsdorp's storming run. He seemed to learn his lesson quickly, though, and he was clinging onto Pedro for dear life shortly after, albeit at the expense of a free kick on halfway. Linked up nicely with Bruno Fernandes in the build-up to Cavani's opener.
MF Fred, 7 -- Picked out Cavani with a neat ball over the top as United went close for the first time. The Brazilian later produced a brilliant threaded pass to find the same man, who put the game well and truly to bed. That said, he was guilty of overpaying as Roma hit back to go 2-1 ahead.
MF Paul Pogba, 7 -- Shrugged off the ball all too easily by Pedro and the France star was fortunate to see the former Barcelona and Chelsea man fire comfortably over the bar. Nothing glamorous on this occasion from the silky midfielder, but that wasn't his job tonight.
MF Mason Greenwood, 6 -- The troublesome winger has been in fine form of late, but he never really got going at the Stadio Olimpico. Wasted a glorious chance to settle his side's nerves when he shot wide after excellent play from Fernandes.
MF Bruno Fernandes, 8 -- A slow start, but once he started to get into his groove United simultaneously began to take full control. Almost did what he does so often, but this time his beautifully struck curling effort just about evaded the top corner. Grabbed himself an assist with a fabulous ball to find Cavani for United's second.
MF Donny van de Beek, 6 -- A welcome start for the Dutchman, who pressed well in midfield. He seemed to be relishing every minute and produced an excellent run and pull-back as Fernandes went close. After a good start, was a little sloppy after the break.
FW Edinson Cavani, 9 -- Seven in seven now for the Uruguayan, who clipped the bar with a delicate effort before a change in approach saw his thunderous effort beaten away by Mirante. Made no mistake at the third time of asking as he smashed the ball beyond the helpless Roma keeper before heading home his second when United really needed it.
DF Brandon Williams, 5 -- Replaced Aaron Wan-Bissaka at the break. Took a tumble when he trod on a cross-field ball from Maguire that left him red-faced, but otherwise no harm done. Saw yellow late on for an innocent enough challenge
DF Alex Telles, 3 -- Replaced Luke Shaw at the interval and produced a confident display. After a confident start he was guilty of a couple of critical errors as Roma threatened to stun the men in white.
MF Nemanja Matic, 6 -- Came on for Pogba as United looked to tighten things up in the middle and see out the contest, which they did.
MF Juan Mata, N/R -- Made a cameo appearance but it was little more than that.
FW Marcus Rashford, N/R -- On for the final 18 minutes as Solskjaer opted to save Cavani for another day but didn't really have a sniff of a goal.