Atletico Madrid moved eight points clear at the top of La Liga with a hard-fought 2-1 win at Granada.
Marcos Llorente fired Atletico ahead in the second half and although Yangel Herrera equalised for Granada soon after, Angel Correa's deflected effort clinched all three points for Diego Simeone’s side.
Luis Suarez had earlier hit the crossbar for Atletico, who have a substantial lead over reigning champions Real Madrid with a game in hand.
Barcelona moved up to second after thrashing Alaves 5-1 to extend their unbeaten La Liga run to 12 matches.
Lionel Messi marked his club record-equalling 505th LaLiga appearance for Barca with two goals and there was also a double for Francisco Trincao on his full league debut.
Luis Rioja struck for Alaves early in the second half to make it 2-1, while Junior Firpo completed the scoring for Barca with 10 minutes remaining.
Sevilla extended their winning run to eight games in all competitions, beating bottom club Huesca 1-0 at home and they are now a point behind Barca and Real Madrid.
Munir El Haddadi headed the game’s only goal early in the second half as Sevilla stay fourth in the table.
Eibar drew 1-1 at home against fellow relegation battlers Real Valladolid after Kike cancelled out Roque Mesa’s early penalty for the visitors.
In Germany, Jadon Sancho and Erling Haaland were both on target for Borussia Dortmund, but they were held 2-2 at home by Hoffenheim.
Sancho’s opener was cancelled out by Munas Dabbur before the interval and Ihlas Bebou headed Hoffenheim into a second-half lead.
Haaland equalised with his 15th league goal of the season, but Dortmund remain sixth in the table after just one win in their last six Bundesliga matches.
Bayer Leverkusen missed the chance to close in on the top two, drawing 2-2 at home to Mainz, who struck twice in the closing stages to snatch a point.
Patrik Schick looked to have sealed maximum points for Leverkusen when making it 2-0 late in the game after Lucas Alario’s early opener.
But Robert Glatzel pulled one back for Mainz and Kevin Stoger levelled in stoppage time.
Teenager Luca Netz fired a late equaliser for Hertha Berlin in a 1-1 draw at Stuttgart to become his club’s youngest scorer in the Bundesliga.
Netz, 17, struck in the 84th minute after Sasa Kalajdzic headed Stuttgart in front on the stroke of half-time.
Werder Bremen drew 0-0 with Freiburg at the Weser Stadium and bottom club Schalke registered just their second point in six matches after drawing 0-0 at Union Berlin, who remain in ninth place.
In Italy, Serie leaders AC Milan slipped to a 2-0 defeat at Spezia and have now lost two of their last four league games.
Second-half goals from Giulio Maggiore and Simone Bastoni stunned Stefano Pioli’s side and secured back-to-back wins for Spezia.
Defeat leaves Milan two points clear of Inter, who could leapfrog their city rivals into top spot with victory at home against Lazio on Sunday.
Juventus slipped to their third Serie A defeat of the season and remain five points behind second-placed Inter as they lost 1-0 at Napoli.
Lorenzo Insigne converted a first-half penalty after Juventus skipper Giorgio Chiellini, making his 400th Serie A appearance, had handled.
Speculation had been mounting over the future of Napoli boss Gennaro Gattuso following defeats at Genoa and at Atalanta in the Coppa Italia.
But his side are back up to fourth in the table, two points behind Juve, who had won their previous three league matches.
Torino drew for the fifth successive game in Serie A, held 0-0 at home by Genoa.
In France, Moise Kean headed his 10th Ligue 1 goal of the season to secure Paris St Germain a 2-1 home win against Nice, which sent them top after Lyon’s home defeat to Montpellier.
Rony Lopes hauled Nice level early in the second period after Julian Draxler had fired PSG into a half-time lead, but Kean, on loan from Everton, converted Mauro Icardi’s cross in the 76th minute.
Mauricio Pochettino’s side are top on goal difference, with Lille second, while Lyon are third after losing 2-1 to Montpellier.
Lucas Paqueta cancelled out Teji Savanier’s opener for Montpellier before half-time, but Sepe Elye Wahi struck a 65th-minute winner for the visitors as Lyon lost for the first time in five league matches.
Florian Sotoca’s close-range finish earned Lens a point in a 1-1 draw at Reims, who had led at half-time through Arber Zeneli’s header.