Sevilla missed the chance to keep pace with Barcelona after being held to a goalless draw at Osasuna.
Sevilla had the better chances in a tight game, but they could not find a crucial goal at Estadio Reyno de Navarra.
The draw leaves Sevilla two points behind leaders Barcelona.
Real Madrid closed to within five points of Barcelona with a fortunate 2-1 win at struggling Celta Vigo.
Ruud van Nistelrooy gave Real the lead on 28 minutes when he converted from the penalty spot after he had been tripped by Celta keeper Jose Pinto.
Celta drew level a minute before the break when Lopez Angel scored after a neat flick from Nene.
Robinho came off the bench to grab the winner for Real against the run of play seven minutes from time.
Guti got himself sent-off in the final minute when after being booked for diving in trying to win a penalty he picked up his second booking for arguing the decision with the referee.
Racing Santander edged out Athletic Bilbao in a nine-goal thriller to boost their hopes of qualifying for Europe.
Giant Serbian striker Nikola Zigic was the hero for the home side with a superb hat-trick.
Bilbao made the perfect start when Luis Prieto gave them the lead after just seven minutes, but Christian levelled matter just before the hour mark.
Joseba Etxeberria restored Bilbao's lead on 63 minutes, but Racing drew level again three minutes later when Ezequiel Garay converted from the penalty spot.
Zigic grabbed his first goal of the game on 70 minutes to put Racing in front for the first time and he grabbed a second seven minutes later.
Bilbao refused to lie down and scored two goals in three through Etxeberria (80), and Andoni Iraola (83).
Zigic had the last word when he popped up with the winner in the final minute.
Atletico Madrid remain in sixth spot after a 1-1 draw with Real Mallorca at the Vicente Calderon.
Fernando Torres fired Atletico in front on 16 minutes, but Juan Arango equalised for Mallorca after 53 minutes.
Atletico ended the game with just ten men after Peter Luccin was sent-off in stoppage time.
Real Zaragoza threw away a two-goal lead as they drew 2-2 with Getafe.
Goals from Sergio Garcia (22) and Argentine ace Andres D'Alessandro (36) put Zaragoza in firm control, but Getafe rallied with strikes from Manu Del Moral (43) and Javi Casquero (61).
The only sour note for Getafe was the sending off of Javier Paredes in the dying seconds.
Gimnastic missed the chance to climb off the bottom of the table after being held to a 1-1 draw at home to Recreativo de Huelva.
On-loan striker Florent Sinama-Pongolle gave Recreativo the lead on 11 minutes, but Javier Portillo drew Gimnastic level just four minutes later.
Gimnastic were forced to play for 48 minutes with just ten men after Alejandro Campano was sent-off but the home side held on for a point.
Click on fixture for full match summary