Cristiano Ronaldo was sent off for lashing out but Gareth Bale scored a late penalty to give a ragged Real Madrid side all three points from a 2-1 win at Cordoba.
The European champions fell behind to a penalty scored by Nabil Ghilas in only the second minute of the game but Karim Benzema levelled later on in the first half.
Cordoba had a number of chances to retake the lead in the second half but wasted them all, and Bale snatched the winner from 12 yards in the 88th minute after his free kick was handled by Fede Cartabia, who was also sent off.
Ronaldo later apologised for his needless kick out at Edimar.
Lionel Messi and Neymar each scored braces as Barcelona eviscerated struggling Elche 6-0 to keep the pressure on.
The Catalans needed 36 minutes to break the deadlock through Gerard Pique but dominated the second half, particularly after Elche midfielder Faycal Fajr was sent off in the 57th minute.
Neymar and Messi then set about ravaging their opponents, while Pedro scored the final goal of the game in injury time.
This is the last time the two sides will face each other this season and Elche must be relieved to see the back of the Blaugranas, having conceded a total of 18 goals and scoring none in the four times they have met.
Atletico Madrid kept pace with their rivals at the top of the Primera Division as they brushed aside neighbours Rayo Vallecano 3-1.
Antoine Griezmann scored a brace -- and somehow missed out on a hat-trick despite a string of second-half chances -- and, although Roberto Trashorras pulled one back before halftime, an own goal from Alberto Manucho put Atletico back in firm control early in the second half.
Atletico took the lead in the 12th minute, with Griezmann seizing on a terrible touch from Jose Ze Castro and racing towards goal to slot the ball past Antonio Tono.
The Frenchman scored his second 10 minutes later. Mandzukic won a flick-on from a long ball, and with Rayo's back three in no sort of order, Griezmann broke clear and poked it past Tono. It was his 10th league goal of the season, and 15th in 31 appearances in all competitions.
Villarreal kept the heat on the teams at the top with a 1-0 win over neighbours Levante as visiting goalkeeper Diego Marino suffered a forgettable return to El Madrigal.
On a night which saw Villarreal announce they had reached an agreement to for centre-back Gabriel Paulista to join Arsenal, Luciano Vietto netted a 56th-minute winner following a bad mistake from Marino.
Vietto was quickest to react after Marino spilled Manuel Trigueros' 25-yard strike as Villarreal moved level on 38 points with fifth-placed Valencia, who play fourth-placed Sevilla on Sunday.
Xabi Prieto's second-half goal ensured Real Sociedad returned to winning ways. Prieto headed home the game's only goal at the Anoeta to see off Basque neighbours Eibar 1-0 and earn David Moyes' side a welcome three points after last weekend's home loss at the hands of Rayo Vallecano.
The result lifted Sociedad to 11th place, and left Eibar eighth.