Cristiano Ronaldo struck late to give 10-man Real Madrid a 2-1 win victory and end Barcelona's 39-game unbeaten run in a tense Clasico at the Nou Camp that was overshadowed by controversial decisions from referee Alejandro Jose Hernandez Hernandez.
Gerard Pique headed home from a corner to give Barcelona a deserved lead on 56 minutes but Karim Benzema's acrobatic volley levelled for the home side, who were fortunate to not concede a penalty in the first half.
Referee Hernandez also refrained from presenting Madrid captain Sergio Ramos a second yellow card in the second half, although he eventually showed the 30-year-old a red card in the 83rd minute.
But Barcelona failed to capitalise on their numerical advantage and fell behind in the 85th minute when Ronaldo chested down a high cross from Gareth Bale to fire in at the near post.
Barcelona stay top of La Liga on 76 points, seven ahead of Madrid, but they had their lead over nearest challengers Atletico Madrid cut to six points.
Diego Simeone's side thrashed Real Betis 5-1 earlier on Saturday thanks to a double from their top scorer Antoine Griezmann and strikes from Fernando Torres, Juanfran and Thomas Partey.