Cristiano Ronaldo netted the winner as Real Madrid opened up a seven point gap over title rivals Barcelona with a 2-1 win at the Nou Camp.
Real defended well after Sami Khedira had given them the lead following an error from Victor Valdes. As a corner came in, Pepe's header was palmed out into the danger zone and Khedira swooped to hack home as Carles Puyol could not clear.
Barcelona attacked and missed two great chances when Xavi and then youngster Cristian Tello got a sight of goal, but equalised in the 70th minute as substitute Alexis Sanchez bundled the ball home from close range.
It was 1-1 for only a few minutes as Mesut Ozil released Ronaldo who turned on the afterburners to get away from the defenders and slot past Valdes for his 54th of the season.
Sporting Gijon boosted their survival hopes with a vital 2-1 victory over nine-man Rayo Vallecano thanks to Mate Bilic's superb late free-kick.
Gaston Sangoy gave the hosts a deserved lead after 17 minutes and, although Mikel Labaka equalised six minutes into the second half, substitute Bilic's fine strike 12 minutes from time restored their lead. The winner arrived moments after Labaka had been sent off for a bad foul on Bilic, with Jose Manuel Casado also receiving his marching orders three minutes from the end for a second bookable offence.
Victor Casadesus' first-half header consigned Real Zaragoza to a 1-0 reverse at Mallorca - their third defeat in four games - and left their Primera Division survival hopes hanging by a thread.
Mallorca's set-pieces troubled Zaragoza all day and Victor headed in unchallenged from Chori Castro's corner just after the half-hour. Manolo Jimenez's men had more of the ball after the break but could not find a way through a well-organised Mallorca back line. They remained five points from safety with only four games remaining.
In the day's late game, Sevilla were held 1-1 at home by Levante.
Alvaro Negredo opened the scoring for the home side in the 21st minute, but they were pegged back by Arouna Kone just seven minutes later. Sevilla had the best of the game and had a chance to win it in the 87th minute when a foul by Javi Venta saw Negredo given the chance from the penalty spot; however, he saw it saved by Gustavo Munua.
Sevilla move up one place to sixth, while Levante stay in the hunt for the Champions League in fifth.