Luis Suarez booked Barcelona's place in a fourth consecutive Copa del Rey final but was sent off as a bad-tempered 1-1 draw with Atletico Madrid on Tuesday secured a 3-2 aggregate win.
Suarez's second goal of the tie looked to have put the semi-final beyond the visitors just before half-time.
However, the Uruguayan was one of three players sent-off in a pulsating second-half and will miss May's final against Alaves or Celta Vigo.
Kevin Gameiro set up a grandstand finish seven minutes from time moments after blazing a penalty over the bar.
But Barca saw out five minutes of stoppage time with nine men after Suarez's first red card for the club.
"It makes me laugh because it was like he (the referee) wanted to do it," an angry Suarez told Gol Television.
"We need to see if we can appeal the second yellow because it isn't even a foul, but we already know how these things go."
Atletico needed a first win at the Camp Nou since 2006 to have any chance of overturning a 2-1 first leg deficit inflicted by stunning goals from Suarez and Lionel Messi.
Yet, a fine performance in which they pushed Barcelona all the way gave Atletico boss Diego Simeone hope they can recapture during the rest of the campaign the form that took them to the Champions League final last season.
"We are out of the competition but have our heads held high and the strength that we have three fantastic months (ahead)," said Simeone.
"Hopefully we can maintain what we showed against them in the second-half the other day and during the 90 minutes today."
Atletico nearly secured the perfect start with a lightning counter-attack from a Barca corner that ended with Yannick Carrasco stinging the palms of Jasper Cillessen.
However, the visitor's intense early pressing eased as the half wore on and Barca went in front just before half-time thanks to more magic from Messi and Suarez.
Messi sucked in the Atletico defence and when his effort from the edge of the area was parried by Miguel Angel Moya, Suarez gobbled up the rebound for his 23rd goal of the season.
Atletico were dealt an injury blow at the start of the second period as Diego Godin had to be replaced by Lucas Hernandez just five days after the French defender was arrested on suspicion of domestic violence.
However, Simeone's men were given a glimmer of hope just before the hour mark when Sergi Roberto dived in on Filipe Luis and was deservedly shown a second yellow card.
That hope should have been bolstered moments later when Antoine Griezmann smashed the ball inside Cillessen's far post, but was wrongly flagged offside.
Barca's nerves were eased when Atletico were also reduced to 10 men 21 minutes from time when a slip from Carrasco saw him wipe out Arda Turan, the Belgian also being shown a second yellow card.
Messi's incredible run of scoring free-kicks in 2017 nearly continued with a driven effort from fully 35 yards that came crashing back off the bar.
Atletico were given a lifeline when Gerard Pique was adjudged to have tripped Gameiro inside the area with 10 minutes remaining.
Griezmann had missed his fifth penalty in seven attempts at the weekend and handed over responsiblity to his compatriot, but Gameiro blazed over.
Just three minutes later, though, the two combined to great effect as Griezmann's decision to cross rather than shoot caught the Barca defence off guard and Gameiro rolled into an empty net.
Atletico then pilled on the pressure in search of a winning goal on the night to send the game into extra time.
Suarez was the third player to be shown a second yellow for a stray elbow on Koke.
But a great block from Samuel Umtiti to divert Luis's goalbound drive preserved Barca's incredible record of not having lost a tie to anyone other than Real Madrid in the Cup sine 2010.