Manchester United edged into the Europa League final with a 2-1 aggregate win over Celta Vigo as their 1-1 draw at Old Trafford saw late red cards for Eric Bailly and Facundo Roncaglia.
Argentine Roncaglia had just levelled on the night for Celta five minutes from time when a brawl ensued, the defender and Bailly dismissed for pushes that sparked a mass confrontation between the sets of players.
Celta had a chance to advance at the death but John Guidetti failed to turn Claudio Beauvue's square pass into the back of the net and book a place in the final in the city of his birth, with Jose Mourinho's side holding on to set up a date with Ajax by the skin of their teeth.
It was by no means vintage from United at any point and their start was particularly anxious, but they gave themselves a two-goal aggregate cushion in the 17th minute – Marouane Fellaini turning in Marcus Rashford's sumptuous cross for the club's 100th goal of the season.
Although falling further behind on aggregate had a noticeable impact on Celta, they continued to cause United problems at the back with Daniel Wass and Guidetti going close either side of the interval.
Celta's purposeful attacking play ultimately resulted in a goal for Roncaglia, but things soon got out of hand as he and Bailly were dismissed for raising their hands - the Ivorian consequently ruled out of the final.
United managed to hold on in desperate fashion as Guidetti was left with his head in his hands, but their lack of conviction might have alarm bells ringing despite securing passage to Stockholm.
For all of United's dominance in the first leg, they endured a very shaky start at Old Trafford.
An early Daley Blind error ultimately went unpunished, but a few moments later he was tormented by Iago Aspas, who evaded the Dutchman and forced Sergio Romero into a crucial save from a tight angle.
But United suddenly burst into life and calmed their supporters' growing unease. Rashford cut in from the left and produced a wonderful delivery to the far post, where Fellaini headed past the suspect Sergio Alvarez.
That goal certainly took some of the sting out of their previously vibrant attacking play, though Celta remained a threat.
Luckily for United, Celta were generally restricted to long-range efforts, with Pablo Hernandez and Pione Sisto both testing Romero.
But Sisto really worried United just before the break, flashing a ferocious ball across the face of goal, only for the stooping Wass to head agonisingly wide.
Celta began the second period much like they started the first, though they had Alvarez to thank for keeping them in the tie shortly after the break as he pushed Henrikh Mkhitaryan's rasping 25-yard drive over the crossbar.
United had a lucky escape themselves just before the hour – Guidetti sending a 12-yard half-volley wide of the left-hand post after good play by Sisto.
Rashford did brilliantly at the other end a few moments later, turning Gustavo Cabral inside out, dribbling past Roncaglia and seeing his chipped effort blocked by Alvarez.
The goalkeeper made another smart stop in the 70th minute, getting down to his right to keep Fellaini's effort from squeezing inside the post.
Roncaglia then forced a tense finish when he headed Theo Bongonda's cross into the bottom-left corner five minutes from time.
The drama ramped up a notch as Bailly and Guidetti clashed a minute later, the Swede going to ground after receiving a hand to the face and Roncaglia retaliated by shoving the United man to also receive his marching orders.
Guidetti had the chance to finish United off with almost the last kick of the game, but he failed to sort his feet out with the goal at his mercy as Mourinho's men clung on.