Ronaldo fires Real to win
Cristiano Ronaldo scored a hat-trick and set up another goal for Kaka as Real Madrid twice fought back from deficits to defeat Villarreal 4-2 in a thrilling encounter at the Bernabeu.
Villarreal led through goals from Cani and Marco Ruben during a hugely impressive first-half display, but they were pegged back each time by strikes from Ronaldo.
The second half belonged almost entirely to Madrid and Ronaldo gave the home side the lead they deserved with his third of the match 10 minutes from time, and two minutes later he provided the pass for the fit-again Kaka to score his first goal of the season.
The victory means Madrid, who beat Villarreal 6-2 in last season's corresponding fixture, have now won 17 successive competitive matches at home and move back to within two points of leaders Barcelona.
Valencia's Juan Mata scored a late goal to settle the city derby 1-0 against Levante and make amends for his earlier penalty miss.
A nervy contest, high on endeavour but woefully short on quality, was settled by Mata's controversial strike seven minutes from time.
The Spain international looked suspiciously offside when he was played through by Vicente but ignored the protests to run on and coolly slot his shot past home keeper Manuel Reina and into the bottom right-hand corner.
It was a moment of redemption for Mata, who fired his spot-kick over the bar in the 26th minute.
Fifth-placed Espanyol returned to winning ways as they thrashed struggling Real Zaragoza 4-0.
Goals from Dani Osvaldo, Luis Garcia - from the penalty spot - and Alvaro Vazquez saw the home side race into a 3-0 lead at the break and Sergio Garcia added a fourth late on to ensure a first success of 2011 for the Catalan outfit and make it eight wins from nine at Cornella for Mauricio Pochettino's men.
Osasuna and Getafe drew 0-0 while Real Mallorca gained revenge for their midweek Copa del Rey exit at the hands of Almeria as they beat the Andalusian side 4-1.
The islanders raced into a 2-0 lead at the break thanks to goals from Ivan Ramis and Victor Casadesus.
And although Albert Crusat reduced the deficit for Almeria halfway through the second period, Mallorca hit back straight away through Emilio N'Sue and sealed a satisfying victory with a late Michael Pereira effort.
Diego Castro scored an injury-time equaliser to help Sporting Gijon climb off the bottom of the table in a 1-1 draw with Racing Santander.
For so long it had looked as though Gregory's first-half own goal would condemn the Rojiblancos to a 10th defeat of the season, until Castro's late intervention.
The point lifts Manuel Preciado's men above Almeria and Zaragoza on goal difference.