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.
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, the visitors 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.
The Dutch goalkeeper also saved a long range effort from Koke before Filipe Luis's volley flew just wide.
Barca took 27 minutes to have an effort on goal when Messi's low drive was held by Miguel Angel Moya.
However, Atletico'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 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, the visitors were given a glimmer of hope just before the hour mark when Sergi Roberto dived in on 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 thrid 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.