Jeremy Mathieu's 20th minute header was cancelled out by Cristiano Ronaldo in right after the half hour mark, but Barcelona managed to secure the three points thanks to a 57th-minute strike from Luis Suarez.
Although Barcelona made the better start, dominating proceedings in the early stages of the game, it was Real who created the first real chance of the game in the 12th minute.
Karim Benzema, after breaking away from the Barcelona defence, whipped an excellent ball towards the far post. Ronaldo managed to connect with a cushioned volley but his effort struck the crossbar.
The near miss proved very costly for the Los Blancos as Barcelona took the lead through centre-back Mathieu after only seven minutes.
Lionel Messi sent a 30-yard free-kick into the box and Mathieu, after managing to outmuscle Sergio Ramos, powered a header past Iker Casillas.
Neymar had an excellent oppotunity to further increase his side's lead at the half hour mark, but the chance went begging as the Brazilian somehow failed to hit the target from six yards out.
Taking advantage of Barcelona's momentary lapse of concentration after Neymar's miss, Carlo Ancelotti's men soon drew level through Ronaldo in the 31st minute. .
Some excellent play between Gareth Bale and Luka Modric saw the latter play the ball towards Benzema. The French striker back-heeled the ball towards Ronaldo, who made no mistakes as he stabbed the ball past Bravo.
Buoyed by the equaliser, Real started pushing for another goal and they again found the nets through Bale in the 40th minute. However, the goal was disallowed as the Welshman had been offside.
The final chance of the first half fell to Ronaldo, but the Portuguese's stinging drive that looked destined to find the top corner was brilliantly tipped over by Bravo.
Right after the break, Real got another good opportunity through Benzema. But Bravo again came to Barcelona's rescue as he made a fantastic save to deny the Frenchman from a close ranged effort.
However, despite Real Madrid's continued attacks, it was Barcelona who again went ahead through Suarez.
Dani Alves picked out the Uruguayan with a long ball over the Real defence and the former Liverpool striker raced forward before finding the nets with a composed finish past Casillas.
After taking the lead, Barcelona became very dominant as they put a lot of pressure on Real's defence creating chance after chance in the closing stages of the game.
However, their finishing was not up to the mark as Messi, Neymar and Jordi Alba all missed good chances to further increase their side's advantage.
Towards the end, Barcelona were nearly made to pay for their poor performance in front of goal, but Bravo again came to the Catalans' rescue as he managed to keep out a deflected shot from Benzema and preserve his side's lead, helping them walk away with all the three points.