Barcelona missed out on the chance to go 11 points clear at the top of the Primera Division as they squandered a two-goal advantage in a 2-2 draw at Villarreal.
Ivan Rakitic's half-volley and a classy 'Panenka' penalty from Neymar had given Luis Enrique's side a comfortable lead before half-time.
But Villarreal fought back after the break, Cedric Bakambu halving the deficit before Jeremy Mathieu knocked the ball into his own net just moments after coming on as a substitute.
Despite failing to win for the first time in 13 league games, Barca increased their lead over nearest challengers Atletico Madrid at the top of the table to nine points after the Rojiblancos lost 2-1 at Sporting Gijon, while Villarreal remain fourth, picking up a first point in three games.
Cristiano Ronaldo scored and missed a penalty as Real Madrid cut the gap to neighbours Atletico in second place to a single point by thrashing Sevilla 4-0 at the Bernabeu, although the scoreline did not fairly reflect the balance of play.
Kevin Gameiro missed a spot-kick in the first half with the score at 1-0 and then had an equalising goal wrongly ruled out in the second half, just after Ronaldo had missed the target from 12 yards.
Karim Benzema had given Madrid the lead after just six minutes and Ronaldo finally doubled the hosts' advantage midway through the second half, while Gareth Bale and substitute Jese completed the rout.
Madrid remain third in the table and 10 points behind leaders Barcelona, who they face in their next league game in a fortnight's time at the Nou Camp, while Sevilla slip down to sixth place.
Late goals from John Guidetti and Hugo Mallo gave Celta Vigo a 2-0 win at hapless Valencia to pile more misery on coach Gary Neville, who was the subject of angry chants by the Mestalla crowd.
Valencia fell behind after 80 minutes as Guidetti latched onto an audacious back-heel by Fabian Orellana to lash home.
Five minutes later, captain Mallo finished off the hosts, coasting down the right-hand side and cutting inside to beat goalkeeper Mat Ryan at the near post.
As the whistle approached, furious Valencia fans turned their anger on Neville, chanting "Gary go now."
Goals from Pape Diop and substitute Felipe Caicedo saw Espanyol come from behind to beat Athletic Bilbao 2-1 and move seven points clear of the relegation zone.
Javier Eraso had given the Basques the lead after 20 minutes by following up his shot on the rebound after Pau Lopez had parried.
Constantin Galca's side got the equaliser they deserved in the 54th minute, Diop rising to meet a corner and heading home.
They took the lead for the first time in the game just three minutes later. Gerard Moreno raced forward on the counter and spotted Caicedo on the edge of the area, the Ecuadorian controlling the ball and beating a defender before lashing into the net, making his mark on the game just four minutes after coming off the bench to replace Asensio.