Chelsea loanee Marko Marin shone for Sevilla while the top three of Real Madrid, Barcelona and Atletico Madrid won their respective matches – meaning next Sunday's El Clasico will be crucial in the destiny of this year's La Liga title.
After suffering a shock 1-0 defeat at Real Valladolid last weekend, Barca boss Tata Martino demanded his team get back on track against Osasuna. And so they did. The Catalan giants thrashed the Pamplona club 7-0 as they returned to their best, with Lionel Messi going past Paulino Alcantara's club record of 369 goals.
The Argentine star sealed a brilliant hat-trick to help his team crush Osasuna to close the gap on Real and Atletico Madrid in the Spanish title race – building on the confidence gained in beating Manchester City.
Alexis Sanchez, Pedro and Andres Iniesta also scored, as did Cristian Tello, who has admitted he loves the Premier League but showed against Osasuna he can be a first-team asset.
Manchester United target Alex Song, who has failed to get a regular place in the Barca line-up, played the final 29 minutes.
With 10 matches left to play, Tata Martino's side are four points behind leaders Real, and one adrift of Atletico – but will have the chance to cut the gap from their rivals at the Bernabeu next Sunday.
Real Madrid did not fail and won 1-0 against Malaga although they struggled more than many predicted. Carlo Ancelotti's side did not show their best game but they have stars such as Cristiano Ronaldo who can decide matches at any time.
The Portuguese, whose collision with Karim Benzema caused him to go off injured, appeared when his team needed him most. Ronaldo scored the winning goal in the 23rd minute, after cutting into the penalty area from the left following a pass from Gareth Bale – it was his 25th goal in La Liga and 39th in all competitions this year.
However, despite the victory, a tired Real were fortunate that Malaga failed to equalise in the last 10 minutes.
Atletico Madrid kept the pressure on Real as they won 1-0 against Espanyol. Diego Costa had already scored twice against Milan in the Champions League, and kept up his good form against Barcelona's second club.
The Spanish-Brazilian striker, who could have had a penalty after a tussle with Juan Fuentes in the area, scored the only goal in the 55th minute from David Villa's pass – ensuring Atletico remain in contention for league glory.
Chelsea loanee Thibaut Courtois, who suffered a strong blow to the head, blocked David Lopez's shot as Atletico hung on to a crucial victory.
Elsewere, Imanol Agirretxe gave Real Sociedad a 1-0 win over Valencia, provisionally lifting the Basque side into fifth place. Villarreal can move back above Sociedad on Monday when they host fourth-place Athletic Bilbao.
Kevin Gameiro scored a double as Sevilla eased to a 4-1 win over Valladolid. Ivan Rakitic and Diogo Rosario also scored for Sevilla before Javi Guerra got Valladolid's consolation goal. Chelsea loanee Marko Marin, who had not play as a starter in the league since getting injured in October, was key to the Andalucian club's victory.
Barcelona 7-0 Osasuna
Malaga 0-1 Real Madrid
Atletico 1-0 Espanyol
Getafe 3-3 Granada
Elche 0-0 Betis
Rayo 3-1 Almeria
Levante 0-1 Celta
Sevilla 4-1 Valladolid
Real Sociedad 1-0 Valencia
Villarreal - Athletic (Monday-22:00)