Karim Benzema scored two penalties and missed another as Real Madrid soared 12 points clear in LaLiga with a 2-1 win at Celta Vigo.
Benzema netted his opening spot-kick in the 19th minute before Nolito equalised for the hosts early in the second half.
The French international saw his next opportunity saved in the 64th minute but made no mistake with his third chance five minutes later as Real erased the memory of their 4-0 home humiliation by Barcelona last month.
Jose Luis Morales scored twice in the second half as struggling Levante boosted their survival hopes with a 2-0 win over Villarreal, while Borja Mayoral scored a late winner to see Getafe past Mallorca.
In Serie A, Lazio bounced back from their defeat in the Rome derby two weeks ago as they beat Sassuolo 2-1 at the Stadio Olimpico.
Manuel Lazzaro scored an early opener and Sergej Milinkovic-Savic added his side’s second early in the second half before Hamed Traore struck an injury time consolation.
Also in Serie A, Emanuel Gyasi scored the only goal deep into injury time to claim three valuable points for Spezia and strike a further blow to second-bottom Venezia’s survival prospects.
Bayern Munich extended their lead in the Bundesliga to nine points with a 4-1 thrashing of Freiburg, while second-placed Borussia Dortmund crashed to RB Leipzig by the same score.
Bayern had to work for their win after Leon Goretzka’s 58th minute opener was swiftly cancelled out by Freiburg’s Nils Petersen.
Later goals from Serge Gnabry, Kingsley Coman and Marcel Sabitzer tightened their grip on the title race as their close rivals were embarrassed on home turf.
A brace from Konrad Laimer put Leipzig in control in Dortmund and further strikes from Christopher Nkunku and Dani Olmo sealed a stunning win over the hosts, who replied through Donyell Malon.
Sixth-placed Hoffenheim lost ground after two goals from Takuma Asano gave Bochum a 2-1 win at the PreZero Arena.
Bottom club Greuther Furth earned a goalless draw at Eintracht Frankfurt while Arminia Bielefeld and Stuttgart also shared the spoils in a 1-1 draw.
In Ligue 1, Martin Terrier grabbed a 78th minute equaliser for second-placed Rennes in a 1-1 draw at Nice, while Lille were held to a frustrating goalless draw by bottom club Bordeaux.
The match between St Etienne and Marseille was postponed after heavy snowfall made access to the Stade Geoffroy-Guichard unsafe.