Barcelona came through a tough test against Sporting Gijon, while Malaga boosted their UEFA Champions League hopes with victory at Getafe.
Barcelona lurched to a much-needed 3-1 win over lowly Sporting Gijon to cut the gap on Real Madrid to seven points, on a night they struggled for a cutting edge without Lionel Messi.
With the Argentina playmaker suspended, Barca looked in real danger of dropping yet more points when David Barral's 49th-minute equaliser came moments after Gerard Pique saw red.
The champions had been frustrated before Andres Iniesta opened the scoring just before half-time and their ineffectiveness in front of goal looked like costing them until Seydou Keita curled in a wonderful goal with 11 minutes left.
Xavi added a third late on as Barca extended their unbeaten run at the Camp Nou to 49 games.
Eliseu Pereira scored one goal and set up another as Malaga came from behind to see off the challenge of Getafe 3-1 and move up to fourth in the standings.
Manuel Pellegrini's men trailed to a first-half strike from Diego Castro, but Eliseu's introduction after the interval provided an equaliser before the midfielder teed up Jeremy Toulalan for Malaga's second.
Santi Cazorla then added a stunning strike from distance as the visitors maintained their push for European football next season.
Emilio Nsue rescued a 1-1 draw for Real Mallorca to put a small dent in Osasuna's hopes of a top-six finish.
The visitors set themselves on course for a rare away win with Alvaro Cejudo's opener just before the interval.
But Nsue replied midway through the second half to earn Mallorca a welcome point in their battle to pull clear of the relegation zone.
Sevilla and Atletico Madrid played out a 1-1 draw in another big match in the race for fourth place.
Both teams are currently just off the pace after struggling for consistency all season, but European qualification remains within reach if either can finish the campaign with a flourish.
It was Atletico who started the strongest at the Estadio Ramon Sanchez Pizjuan, taking the lead after just nine minutes when Eduardo Salvio's glancing header from Gabi's cross found the bottom corner.
Baba Diawara equalised in the 53rd minute with a fine finish from Jesus Navas' cross, and neither side could do enough to force a winner.
Rayo Vallecano recovered from 2-0 down to beat 10-man Racing Santander 4-2 at Vallecas.
The visitors were dealt an early blow when goalkeeper Tono was sent off after just three minutes for bringing down Diego Costa.
However, they responded by taking a 2-0 lead after Marc Torrejon fired in from Christian Stuani's knockdown on nine minutes and Gonzalo Colsa finished calmly 19 minutes later.
Michu pulled a goal back for Rayo just before half-time and the hosts put the game beyond any doubt with three goals in 10 minutes after the break.
Michu tapped in his second to equalise after substitute goalkeeper Mario spilled Emiliano Armenteros' cross before Raul Tamudo and Piti consigned Racing to their second defeat in three games.