Cristiano Ronaldo put Real Madrid ahead, heading home from a corner, but Pedro levelled immediately from the kick-off.
Lionel Messi scored a penalty after Andres Iniesta was fouled, before Xavi scored a terrific third. At that point it seemed like the first trophy of the season was heading to Barca, but then Angel Di Maria pounced on a mistake by Barca goalkeeper Victor Valdes to set up a potential classic next week at the Bernabéu.
The match showcased the different styles and approaches of both teams. Barcelona dominated possession with their relentless ‘Tiki-taka’ passing, while Real threatened with their incisive speed and power on the counter attack.
Jose Mourinho’s tactics appeared to pay off in the 55th minute as Ronaldo freed himself from marker Sergio Busquets and headed in a Mesut Ozil corner to score in his fourth successive visit to the Nou Camp. So much for the criticism of Ronaldo going missing in the big games.
But Barcelona were back on level terms literally a minute later when Javier Mascherano played in Pedro to slot under Casillas for a quickfire equaliser.
From that moment on, both teams showed why they are the best two sides in Europe as the game sprung to life. Both teams had chances to go ahead, but it was Barcelona who scored as Sergio Ramos took down Iniesta in the area and Messi scored from the penalty spot.
Iniesta, who was the best player of the match, then gave provided a brilliant assist to Xavi, and at 3-1 this tie seemed over.
But then Di María stole the ball from Valdés’s feet and comfortably scored before an empty goal silencing the Barcelona fans.
Valdes mistake sets the stage for next Thursday’s return leg at Bernabéu which should be another classic.