Manchester United booked their place in the Europa League final as they clinched an 8-5 aggregate win over Roma despite going down 3-2 in the second leg at the Stadio Olimpico.
Ole Gunnar Solskjaer's side will face Villarreal at the Gdansk Arena in Poland after the Spanish side overcame Arsenal in the other semi-final following a goalless draw at the Emirates.
United extinguished any faint hope of a turnaround in the Italian capital when Cavani extended their lead (39) but quickfire second-half goals from Edin Dzeko (57) and Bryan Cristante (60) put Roma in front.
Cavani notched his second with a trademark header (68) before 19-year-old Nicola Zalewski settled the game on the night to cap an entertaining second leg - but United progress to their eighth major European final.
Roma: Mirante (6), Karsdorp (7), Smalling (6), Ibanez (6), Peres (5), Cristante (7), Mancini (6), Pedro (7), Pellegrini (7), Mkhitaryan (7), Dzeko (7).
Subs: Santon (6), Mayoral (6), Darboe (6), Zalewski (7).
Man Utd: De Gea (9), Wan-Bissaka (6), Bailly (6), Maguire (6), Shaw (6), Van de Beek (5), Fred (7), Greenwood (6), Fernandes (7), Pogba (6), Cavani (8).
Subs: Mata (n/a), Rashford (6), Telles (5), Matic (6), Williams (5).
Man of the match: David de Gea.
Man Utd set up Villarreal final in Gdansk
After four semi-final defeats, it is a first final for Solskjaer as United manager. His side were already in a commanding position having won the opening leg 6-2 at Old Trafford, but the Norwegian called on his players to maintain their momentum by playing with confidence heading into a hectic period of four games in eight days.
- Ole on keeping Edinson Cavani | Will David de Gea start in final
- Donny van de Beek: Did he take his chance?
- When is the Europa League final?
- How the teams lined up | Match stats
Roma sent ripples around the footballing world on Tuesday by announcing Jose Mourinho would be taking charge in the summer. The departing Paulo Fonseca said Mourinho's impending arrival would not be a distraction, but it seemed hardly ideal preparation for the visit of United, who had become the first side since 1964 to win a European semi-final by scoring six goals.
- Manchester United made three alterations from the first leg. Eric Bailly, Donny van de Beek and Mason Greenwood came in for the return fixture. Victor Lindelof, Scott McTominay and Marcus Rashford dropped to the bench.
- Paulo Fonseca threw a bit of a surprise with former Chelsea winger Pedro starting. The Roma head coach adopted a 4-2-3-1 system with Pedro, Mkhitaryan and Pellegrini playing behind Dzeko. Smalling was once again at centre-back against his former club with Borja Mayoral named on the bench.
Roma needed an early goal to have any chance of staging a seismic comeback akin to the one achieved in the Champions League against Barcelona in April 2018, and they were brilliantly denied inside five minutes as David de Gea kept out Gianluca Mancini's effort from close range.
Replays showed Mancini had handled the ball, meaning the goal would have been ruled out, but from Lorenzo Pellegrini's resulting corner, Roger Ibanez's flick-on was headed wide by Henrikh Mkhitaryan.
United were struggling to settle and they were indebted to the alertness of their goalkeeper once more moments later when Rick Karsdorp dispossessed the sleeping Luke Shaw, but his low cross seeking Dzeko was intercepted by De Gea's right boot.
After Pedro stole the ball off Paul Pogba to curl wide, Solskjaer had seen enough as he tweaked the system back to his preferred 4-2-3-1 formation - and Cavani had his first sight of goal after 20 minutes as he latched onto Fred's delicate pass only to loft his finish onto the top of the crossbar.
Roma had not heeded their warning as Cavani came close again when brilliantly played through by Bruno Fernandes but Mirante stayed big to smother his fierce goalbound shot.
Chris Smalling was withdrawn with a muscle injury as Fonseca was again forced into a first-half change - and then the scoring began. Fernandes flicked into the path of Fred, who played Cavani in behind to fire a thumping 20-yard effort past Mirante.
Brandon Williams and Alex Telles replaced the booked Aaron Wan-Bissaka and left-back Shaw at the break, with Roma finally finding a way through in the 57th minute. After a pass came in from the left, Pedro smashed a ball into the ground and back across goal as former Manchester City striker Dzeko headed home from close range.
Roma then claimed a 2-1 lead on the night in the 60th minute. Fred was tackled when overplaying on the edge of his own box, with Cristante firing home a superb first-time strike.
United were stunned by the quickfire double and only De Gea prevented them falling further behind.
The 30-year-old denied Dzeko from a point-blank header and then superbly stopped Pedro's fizzing rebound from finding the back of the net.
If De Gea showed his best with that double save, he knew little about the stop that denied Mkhitaryan when meeting a Pedro effort from close range.
United belatedly steadied and Cavani settled the nerves when he made it 2-2 on the night, the Uruguay striker meeting a fine cross from Fernandes with a powerful header in the 68th minute.
Roma refused to throw in the towel and found the net for a third time as the youngster Zalewski was deemed to have been fractionally onside as he met Davide Santon's cross and volleyed beyond De Gea via a deflection off Telles. It was scant consolation over the course of the tie but no less than Roma deserved for their efforts.
What the manager said
Ole Gunnar Solskjaer speaking to BT Sport:
"It feels good. We played one very good half at Old Trafford, which brought us through. I never like to lose a game, especially the way we did it but it was always going to be one of these games that was going to be open, with chances for both teams. It could have been 6-6 or 8-6 to them! It was a strange game of football.
"We kept losing the ball in difficult positions but luckily we have got one of the best goalkeepers in the world and luckily we have a No. 9 who wants to score goals. Edi and David, two top performances by them.
"It's a team effort. We've had some ups and downs. The second half was disappointing, very poor, but we're in the final and we're looking forward to May 26. It's a one-off. Anything can happen but we'll prepare well."
Analysis: Solskjaer deserves final date
Sky Sports' Adam Bate:
After four semi-final defeats in four previous attempts as Manchester United manager, Ole Gunnar Solskjaer is finally into a final and despite a brief second-half scare against Roma in the Stadio Olimpico, nobody could dare deny that this was deserved over the two legs.
The United boss was taking no chances either, naming a surprisingly strong team in Rome that included Bruno Fernandes and Paul Pogba despite going in with a four-goal lead.
Why not, though? United's Premier League position looks secure with rotation required anyway in the coming days given that congested fixture list. The Europa League is the priority now, offering the silverware that would signpost this team's evident improvement.
David de Gea was busy in the Eternal City but United showed their quality in the final third. There is talk that Anthony Martial could yet return before the end of the season but it would only be the bench for him in Gdansk regardless given Cavani's supreme form.
Fernandes was even better, his creativity remarkable. The Portuguese has transformed this club over the past 16 months but now he wants a trophy to show for it too. On this form, Solskjaer's United should be considered warm favourites to deliver it against Villarreal.
'Now we have to go and win it'
Harry Maguire speaking to BT Sport:
"It's a great achievement. We didn't win the game so that's a disappointment but we did the hard work in the first leg and put ourselves in a great position.
"I felt we started the game a bit edgy - we had chances, they had chances. They played a man-to-man pressing style, which made the game end-to-end like basketball.
"In the second half, we gave them too many chances so we need to improve for the final but it's a great achievement. We have to now go there and win it."
Man of the match - David de Gea
Arsenal were unable to find a way through a resolute Villarreal defence to complete the set of English finalists in Europe's two cup competitions, but United were grateful to their goalkeeper for avoiding a far more tense second half in Rome.
The Red Devils were rattled after Cristante has reduced the deficit to three with half an hour remaining but De Gea provided a timely reminder of the qualities which made him considered as one of the game's finest in his position.
"We kept giving the ball away but luckily we have one of the best goalkeepers in the world," Solskjaer said afterwards.
"David was vital and was man of the match for me. He was the stand-out performer. The final is still three weeks away and we've got many games still to play. David has put a very good application in of course with his performance. The proof is always on the pitch. You've got to perform, and you keep your place in the team when you play well."
In total, the Spaniard produced 10 saves to ensure Roma only scored on three occasions.
Clinical Cavani - Opta stats
- Manchester United v Roma produced a total of 13 goals over the two legs, the biggest tally in a UEFA Cup/Europa League semi-final, and joint-second highest across two legs of any major UEFA competition semi-final, behind Eintracht Frankfurt 12-4 Rangers in the 1959-60 European Cup.
- Manchester United have made it to their first major final in any competition under Ole Gunnar Solskjær; after suffering eliminations in all four previous cup semi-finals under the Norwegian (2x League Cup, 1x FA Cup, 1x UEFA Europa League).
- Roma are now unbeaten in 12 European games on home soil (W8 D4), since a 0-2 defeat to Real Madrid in the Champions League group stage in November 2018.
- Manchester United are only the second side in UEFA Cup/Europa League history to score 8+ goals across both legs of a semi-final tie, after Alavés scored nine against Kaiserslautern in 2000-01.
- Manchester United have progressed to their eighth major European final, with Liverpool the only English team with more (14).
- Manchester United striker Edinson Cavani has scored 16 goals in his last 15 UEFA Europa League appearances, including 15 in his last 10 starts in the competition.
- Edinson Cavani is the first player to score 2+ goals in both legs of a two-legged semi-final in major European competition since Klaus Allofs for 1. FC Köln v KSV Waregem in the 1985-86 UEFA Cup.
Live Renault Super Sunday
Manchester United now face three Premier League games in five days, starting with the trip to face Aston Villa, live on Super Sunday; coverage starts on Sky Sports Premier League at 1pm with kick-off at 2.05pm.
Roma return to Serie A action on Sunday at home to Crotone.
Man Utd's new fixture list
Aston Villa vs Man Utd - Premier League - Sun, May 9, 2.05pm
Man Utd vs Leicester - Premier League - Tue, May 11, 6pm
Man Utd vs Liverpool - Premier League - Thu, May 13, 8.15pm
Man Utd vs Fulham - Premier League - Tue, May 18, 6pm
Wolves vs Man Utd - Premier League - Sun, May 23, 4pm
Villarreal vs Man Utd - Europa League final - Wed, May 26, 8pm
The Europa League final takes place on Wednesday, May 26 at the Gdansk Arena in Poland. The stadium was due to host the 2020 final, but after the tournament was delayed due to Covid-19, the showpiece took place in Cologne, Germany as Sevilla beat Inter 3-2.