Real ended Barca's 100 per cent start to the season but the Catalans are now eight points clear at the top.
Barca certainly looked the better of the two sides but Los Blancos had the early chances. With injuries to first choice centre-backs Carles Puyol and Gerard Pique, Tito Vilanova had Javier Mascherano and a surprising change in the heart of defence. Left-back Adriano was made to play instead of the usual Alex Song.
However, Barca's fragile defence was tested by Crisitano Ronaldo during the 23rd minute, slotting home low shot past Victor Valdes from a tight angle. Tito Vilanova had more injury problems as right-back Dani Alves left the pitch 5 minutes later, leaving Martin Montoya to deal with Ronaldo.
Real's lead didn't last long as Lionel Messi lashed onto the ball following Pepe's failed clearance to equalise in the 31st minute. It remained all square at the break.
At the hour mark, Messi cruised past several Real defenders but was eventually brought down by Xabi Alonso. The Argentinians curling free kick beat Iker Casillas at the far post putting Barca 2-1 ahead.
Five minutes later, Real opened up Barca's defence with playmaker Mesut Ozil sliding a clever through ball to Ronaldo, the Portuguese netted his second on the night to settle the scores 2-2.
Ronaldo became the only player to have scored in six consecutive El Clasico's while Messi broke Alfredo Di Stefano's record of the highest number of goals in Clasico's.
Both Messi and Ronaldo, termed to be the world's best, will be contesting for the Ballon D'Or at the end of the year.