Manchester United progressed to the Europa League final despite being beaten 3-2 by Roma in a pulsating conclusion to their last-four tie.
The Red Devils carried a sizeable 6-2 advantage from the first leg to Stadio Olimpico and Edinson Cavani put the visitors ahead with a powerful finish late in the first half.
But Roma - who were threatening throughout the match - finally started to put their chances away after the interval, with Edin Dzeko equalising and Bryan Cristiante putting the hosts ahead on 60 minutes.
The Giallorossi had a host of other opportunities to make United sweat but David de Gea ensured there was miraculous comeback with a string of magnificent reflex saves.
Cavani grabbed his second of the match in the 68th minute by meeting Bruno Fernandes' cross and burying his header beyond Antonio Mirante.
Nicola Zalewski ensured Roma could leave with their heads held high as his volley cannoned through De Gea's legs off Alex Telles in the closing stages.
United will face Villarreal in Gdansk later this month after the La Liga side managed to hold on against Arsenal at the Emirates.
Here are five talking points from the Italian capital.
1. Solskjaer's surprisingly-strong selection
Manchester United are about to embark on an unprecedented run of three Premier League fixtures in five days.
Their postponed game with Liverpool was shoehorned in next Thursday and will follow challenging encounters with Aston Villa on Sunday and Leicester on Tuesday.
So, with a four-goal aggregate lead, why did Ole Gunnar Solskjaer name a near-first-choice starting line-up for the second leg with Roma?
The Red Devils boss started as many as seven of his strongest XI at Stadio Olimpico, with Marcus Rashford, Victor Lindelof and Scott McTominay the outfield regulars to warm the bench.
Perhaps Solskjaer, desparate to avoid another semi-final exit, resolved to offer Roma no glimmer of hope with a weakened team from the outset.
But his team selection surely means the Norwegian will need to shuffle his options during the flurry of top-flight fixtures to come.
2. Roma's bright start
Despite Manchester United's strong starting XI, it was Roma who began the far brighter of the teams at Stadio Olimpico.
Gianluca Mancini forced a fabulous save from David de Gea and Henrikh Mkhitaryan nodded into the side netting within the opening five minutes.
Pedro and Lorenzo Pellegrini also had excellent opportunities, with the former blazing over from the edge of the area and latter testing De Gea with a powerful effort from a tight angle.
Roma's best chance of the opening 45 minutes came with a sweeping move which began in their own half. Edin Dzeko received a long ball on his chest and fed Pedro down the right flank, with the Spaniard whipping a cross in which Pellegrini glanced narrowly wide.
The linesman's flag went up as the ball trickled past the post, but replays showed the goal would have stood had the Roma captain guided his header on target.
The Giallorossi knew they needed something miraculous to progress to the final and they certainly created the chances to trouble the Red Devils.
But every opportunity they squandered simply confirmed the inevitable - that United would progress to the final in Gdansk.
3. Clinical Cavani the difference
With Roma failing to capitalise on their chances at the other end of the pitch, Edinson Cavani did what he did best.
The Uruguayan had both of Manchester United's shots on target in the first half and, admittedly, should have done better as he fired straight at Antonio Mirante in the 26th minute.
But after missing his first chance, there was no way the veteran striker would miss the second which fell to him.
Fred played a key role in the build-up to the opener with a burst forward into the Roma half before slipping Cavani through on goal.
Again, the 34-year-old went for power and this time fired beyond Mirante to grab his third goal of the semi-final.
Cavani grabbed his fourth of the tie and 14th of the season in the second half with a brilliantly-timed run to meet Bruno Fernandes' cross and head past Mirante.
It was yet another example of Cavani's huge importance to this Red Devils team - and why Ole Gunnar Solskjaer is so desparate to extend his contract.
4. Roma finally hit their stride
Not really, but Roma certainly provided great entertainment with two goals and a sensational flurry of attacks in the middle of the second half.
In the 57th minute, Edin Dzeko popped up to nod Pedro's deflected effort into an open net. On the hour mark, Bryan Cristiante rifled beyond David de Gea after Lorenzo Pellegrini picked Fred's pocket on the edge of the area.
Roma should have further decreased the deficit as they were presented with a string of gilt-edged chances, but De Gea's magnificent performance continued. The pick of his saves was his reflex stop to deny Henrikh Mkhitaryan from point-blank range.
5. United's back-up full-backs fail to impress
Perhaps it was rustiness, perhaps it was a drop in quality.
Either way, the moment Manchester United's grip on the tie slipped was when Ole Gunnar Solskjaer decided to take off his full-backs at half-time.
As mentioned, the United boss went near-full-strength from the outset and with the semi-final sewn up, decided to take Aaron Wan-Bissaka and Luke Shaw off at the break - no doubt with the upcoming fixture run in mind.
But Brandon Williams and Alex Telles struggled to fill the boots of the players they replaced and were overrun throughout the second half.
Telles' own-goal capped a defensively shaky display and things were just as alarming on the other side of defence, where Williams struggled to deal with Henrikh Mkhitaryan and picked up a late booking for a reckless challenge.
Sign up to the Mirror Football email here for the latest news and transfer gossip.