Defenders Carles Puyol and Eric Abidal were the unlikely scorers as Barcelona fought back from a goal down to beat Real Madrid 2-1 in the Copa del Rey quarter-final first leg at the Bernabeu.
Cristiano Ronaldo, who has been criticised by some fans recently, made bright start to the game and gave the home side an early lead but Los Blancos could not deal with Barca's incessant attacks and wilted under the pressure in El Classico.
Barca overcame some particularly cynical challenges in the tie, with Portuguese defenders Pepe and Ricardo Carvalho both extremely lucky to have avoided red cards. Pepe for a stamp on Lionel Messi and Carvalho for two reckless challenges.
Madrid took the lead in the 11th-minute when Ronaldo slipped the ball under goalkeeper Jose Pinto's body. However, Puyol levelled with a second-half header before Abidal converted Messi's sublime pass for Barca's 77th-minute winner.
Both sides named line-ups resembling their strongest XIs, but Pep Guardiola's one significant exclusion was goalkeeper Victor Valdes. They paid the price for that decision when, after Ronaldo created a yard with a step-over, Pinto allowed the ball to go straight through him for the opening goal.
That proved to be the only shot on target for Madrid in a first half dominated by Barcelona. Messi, Andres Iniesta and Alexis Sanchez all went close, the latter heading against an upright from Cesc Fabregas' delightfully flighted pass.
A goal had to arrive, but it came in very straight-forward style from a corner. Pepe completely lost Puyol at the back post, and the Barcelona veteran made no mistake with his stooping header.
Karim Benzema hit a post for Madrid during a rare foray upfield from the Liga leaders, but Barcelona fully deserved their winner, which came when Abidal latched onto Messi's chip over the Madrid defence, controlling before guiding past Iker Casillas.
In the day's other tie, Athletic Bilbao gave themselves a 2-0 first-leg lead over Real Mallorca.
Bilbao keeper Gorka Iraizoz made an excellent early save when Choro Castro's shot deflected off team-mate Tomer Hemed.
But opposite number Juan Catalyud kept out Oscar De Marcos' close-range header and Ander Herrera whistled a 25-yard effort just wide before Bilbao took the lead through Fernando Llorente.
The second arrived when Markel Susaeta superbly controlled the ball and crossed for Iker Muniain to head home, and a late third was wrongly chalked off for offside.