Karim Benzema’s 83rd-minute goal was enough for Real Madrid to extend their lead at the top of LaLiga to nine points with a 1-0 win at Rayo Vallecano.
Real looked under par for much of the match but found the breakthrough when Benzema exchanged passes with Vinicius Junior and finished from close range.
Atletico Madrid moved above Barcelona into fourth place as Renan Lodi scored in either half to secure a 2-0 win over Celta Vigo.
Gabriel’s fourth-minute strike was enough to give Valencia a 1-0 win at Malaga, though they finished with 10 men as Ilaix Moriba collected two quick yellow cards to see red in stoppage time.
Enes Unal’s brace saw Getafe twice come from behind to earn a 2-2 draw with fellow strugglers Alaves, despite playing nearly an hour with 10 men after Jorge Cuenca’s first-half dismissal.
Leroy Sane came off the bench to get the only goal as Bayern Munich stretched their lead at the top of the Bundesliga to nine points with a 1-0 win over Eintracht Frankfurt.
Sane replaced Marcel Sabitzer with 23 minutes left and was on the scoresheet four minutes later.
Moussa Diaby scored twice as Bayer Leverkusen beat Arminia Bielefeld 3-0 to retain their grip on third place, four points clear of Freiburg who beat Hertha Berlin 3-0.
Union Berlin moved up to seventh with a 3-1 win over Mainz, leading through goals from Genki Haraguchi and Sheraldo Becker before the visitors had Dominik Kohr sent off on the hour.
Wolfsburg blew a 2-0 lead and finished with 10 men in a 2-2 draw at Borussia Monchengladbach, with Breel Ebolo getting a late leveller after Maxence Lacroix saw red.
Greuther Furth and Cologne played out a 1-1 draw.
Dusan Vlahovic’s brace helped Juventus cut the gap to Serie A leaders AC Milan to seven points with a 3-2 win at Empoli.
Moise Kean put Juve in front with 32 minutes gone only for Szymon Zurkowski to quickly level.
But Vlahovic restored the visitors’ lead just before the break and added a fine clipped second in the 66th minute before Andrea La Mantia pulled a goal back.
Gregoire Defrel struck in stoppage time to give Sassuolo a 2-1 win over 10-man Fiorentina.
Hamed Junior Traore had given the hosts a 19th-minute lead, but the Viola levelled through Arthur in the 88th minute despite the 79th-minute dismissal of Giacomo Bonaventura.
Salernitana and Bologna played out a 1-1 draw.
Kylian Mbappe had two goals and an assist as Paris St Germain came from behind to beat St Etienne 3-1 and extend their advantage at the top of Ligue 1.
The visitors struck first through Denis Bounga’s 16th-minute goal, but Mbappe levelled three minutes before half-time and then put PSG ahead early in the second half before teeing up Danilo Pereira moments later.
That moved PSG 16 points clear after second-placed Nice were held to a goalless draw by Strasbourg earlier in the day, finishing the game with only nine men after Dante and Justin Kluivert were dismissed.