Barcelona dealt Real Madrid another body blow when they survived a stirring fightback from their arch rivals to draw 2-2 in an action-packed King's Cup quarter-final second leg and send the holders out 4-3 on aggregate.
After Barca won last week's first leg in Madrid 2-1, Real came out swinging and probably had the better of the opening exchanges before Lionel Messi released substitute Pedro to open the scoring for the home side in the 43rd minute in front of almost 100,000 spectators at a raucous Nou Camp on Wednesday.
Fullback Daniel Alves looked to have settled the tie when he blasted a spectacular second in first-half added time, running on to a loose ball and sending a thunderous drive past Real goalkeeper Iker Casillas into the top corner.
Barca appeared to be in total control and they dominated possession at the start of the second half but Real rallied and mounted a rousing late fightback that left them needing just one more goal to advance.
Cristiano Ronaldo, who scored the extra-time winner when Real beat Barca 1-0 in last year's Cup final, sped on to Mesut Ozil's pass and finished past Jose Manuel Pinto just over 20 minutes from time and Barca were reeling when substitute Karim Benzema levelled four minutes later.
Both sides had chances in the frenetic final stages before Real centre back Sergio Ramos was sent off for a second yellow card and Barca then ran down the clock to set up a semifinal against Valencia or Levante.
"The players played a good game," a subdued Real boss Jose Mourinho told a news conference full of curt answers. Real had played well in the first half and did not deserve to be two behind at the break, he said, adding that he had told his players he wanted more of the same in the second period.