Barca took the lead after just seven minutes when Lionel Messi slid the ball through to Andres Iniesta, who took a touch inside the box before smashing an effort past Diego Lopez and into the top corner.
The hosts had a glorious chance to level things up in the 14th minute as Angel di Maria made his way into the area before picking out Karim Benzema, but the French striker could not make the most of the opportunity.
Barca responded with a chance of their own just a minute later as Xavi played a through-ball to Messi, who slid his effort just past the post.
Messi turned provider on the 20-minute mark as he created a chance for Neymar, but the Brazilian winger failed to trouble Lopez.
Madrid punished Barca for such wastefulness with an equaliser just moments later, Benzema rising highest in the area to plant a header past Victor Valdes.
The comeback was completed just four minutes later as Di Maria again found Benzema, who proceeded to fire an effort into the top corner.
It was almost a Benzema hat-trick in the space of six minutes as Di Maria again set up a chance for his teammate, but this time Gerard Pique was on hand to clear the ball off the line.
The visitors responded before the break, however, levelling this up once more as Messi made his way into the area before drilling a low effort into the bottom corner.
Benzema then had a good chance to restore his side's advantage right on the stroke of half time as he latched on to Daniel Carvajal's cross, but he put his header narrowly wide.