Real Madrid missed the chance to move top of LaLiga after a six-goal thriller saw them draw 3-3 with Rayo Vallecano.
The hosts took an early lead thanks to goals from Unai Lopez and Abdul Mumin, but Real soon levelled just before the break through Fede Valverde and Jude Bellingham.
Real took the lead for the first time in the match when Rodrygo hit a stunning strike from outside of the box, but Isi Palazon shortly levelled to earn a point.
Cyle Larin scored twice as 10-man Mallorca came from behind to beat Girona 2-1 after the visitors opened the scoring through Donny van de Beek and Sevilla returned to winning ways after Manu Bueno’s goal was the difference to beat Celta Vigo 1-0.
Osasuna were held to their fourth successive league draw following a frustrating goalless stalemate against strugglers Espanyol.
Bayern Munich were stunned after being beaten 2-1 by Mainz as the Bundesliga title race took another twist.
Lee Jae-sung scored either side of half-time and although Bayern set up a tense finish when Leroy Sane struck in the 87th minute, Mainz held on for victory to break into the top six.
The result allowed Bayer Leverkusen to close in on Bayern after they continued their impressive winning streak with a 2-0 victory over Augsburg.
Alassane Plea bagged a brace as Borussia Monchengladbach earned a 4-1 win over strugglers Holstein Kiel and Benedict Hollerbach cancelled out Ibrahima Sissoko’s opener for Union Berlin to draw 1-1 with 10-man Bochum, who had Koji Miyoshi sent off in the 13th minute.
Werder Bremen moved into seventh with a 2-0 win over St Pauli thanks to goals from Derrick Kohn and Marvin Ducksch.
In Serie A, Nicolo Zaniolo scored the only goal of the game as league leaders Atalanta earned a 1-0 win over Cagliari.
Victory means Atalanta have won their last 10 league games to remain top of the table, two points ahead of Napoli who came from behind to beat Udinese 3-1.
Romelu Lukaku cancelled out Florian Thauvin’s opener and Napoli went ahead after Lautaro Giannetti turned the ball into his own net before Frank Anguissa made the game safe in the 81st minute.
Venezia came from behind after Mikael Ellertsson levelled from Federico Gatti’s goal and Jay Idzes looked to have sealed three points with his 83rd-minute effort, but Vlahovic’s spot-kick rescued a point for Juve.
Marseille missed the chance to close in on Ligue 1 leaders Paris St Germain after being held to a 1-1 draw with Lille.
Quentin Merlin put Marseille ahead, but Bafode Diakite struck in the 87th minute to level and the hosts’ afternoon soured further when Pol Lirola was dismissed in stoppage time.
Monaco were unable to leapfrog Marseille into second later on Saturday following their goalless draw with Reims.
Elsewhere, Lens were held to a 2-2 draw against Auxerre.