The race for the title is well and truly in the hands of the capital outfit, after an inspired performance to clinch victory in the Clasico and open up a seven-point lead
A poor piece of handling from Victor Valdes allowed Sami Khedira to score the only goal of the first half just after a quarter of an hour. Jose Mourinho's men defended dilligently thereafter, but Alexis Sanchez restored parity by scoring a scrappy effort in the 70th minute within moments of coming on as a substitute.
However, Cristiano Ronaldo put Los Blancos' back in front three minutes later with a record-breaking 109th team goal in the league, and Madrid held on for a priceless victory, which opens up a seven-point lead over their great rivals at the top of the table.
With Sanchez benched after battling against an injury picked up against Chelsea midweek, youngster Cristian Tello was preferred to Pedro in attack. Xavi started his 32nd career Clasico game, breaking the all-time record, but there was no place in the home XI for Cesc Fabragas or Gerard Pique.
The major surprise in Mourinho’s team selection was the inclusion of Fabio Coentrao ahead of Marcelo at left-back, despite the former’s suspect showing in the Champions League loss to Bayern Munich.
Madrid made a positive start to the match amidst the raucous Camp Nou atmosphere, and fashioned the first opportunity after only five minutes, with a powerful header from Ronaldo forcing Valdes to tip over.
Barca were quickly back down the pitch, and Dani Alves appeared to be through after pouncing on a sloppy Pepe pass, but Iker Casillas was quick off his line to block the Brazilian at his feet.
With 13 minutes gone, Tello showed lightning-quick feet to evade a pair of challenges out wide, before letting fly with an effort that Casillas did well to save, as the home side grew into the game. But their endeavour was halted, as three minutes later, Madrid were ahead.
The Catalans had their struggles defending set pieces against Chelsea, and so it proved again. Pepe rose highest to get his head to a corner, which was spilled by Valdes, allowing Khedira just enough time to evade the attentions of Carles Puyol and poke the rebound home.
However, Barca should have been level after 26 minutes. An exceptional through pass from Lionel Messi released Xavi on goal, but the midfielder dragged his finish wide with only Casillas to beat.
Both sides continued to provide an entertaining spectacle, despite heavy rainfall in the latter stages of the half. A moment of magic on the right from Ozil nearly carved Barca apart, but Javier Mascherano put in a superb challenge to halt the German from point blank range just before the break.
Barca continued their quest for an equaliser after the restart, but were guilty of another glaring miss. A defence-splitting pass from Thiago Alcantara put Tello clean through, but his first-time finish was woeful, and sent into orbit.
Pep Guardiola’s men continued to keep Madrid penned back in their own half, but for the second time in a week, a determined rearguard effort made chances hard to come by. With 68 minutes gone, Xavi flashed a long range effort just wide with his last contribution of the game, as he was taken off for Sanchez.
The substitution proved to be a masterstroke, as within two minutes, Sanchez put the hosts back on terms. Tello’s shot was stopped initially by Casillas, cueing a penalty-box scramble that ended when the Chilean squeezed the ball home near the goal-line after another save by Casillas.
Madrid’s response was instant. A breathtaking pass from Ozil caught the Barca defence out and released Ronaldo, who accelerated away from the onrushing Valdes and fired home from a tricky angle.
Mourinho’s game plan was simple thereafter, and the visitors were able to hold on to their advantage, defending in numbers and holding onto possession with purpose as they frustrated Barca, and claimed a devastating three points in the title race.
Both sides will look to regain their focus, with deficits to overcome in their Champions League semi-final second-leg matchups midweek. Barca welcome Chelsea on Tuesday, while Madrid entertain Bayern the following day.