Harry Kane scored his third Bundesliga hat-trick as Bayern Munich beat Borussia Dortmund 4-0 in Der Klassiker at Signal Iduna Park.
Bayern produced the perfect response to an embarrassing DFB-Pokal exit to third-tier Saarbrucken as Dayot Upamecano gave them an early lead before Kane added a second after just nine minutes.
The England captain then struck twice more after the break to complete his treble in stoppage time to take 15 goals in 10 league games and move Bayern two points behind leaders Bayer Leverkusen.
Alejandro Grimaldo scored twice as Leverkusen won 3-2 at Hoffenheim earlier.
Florian Wirtz gave the visitors an early lead, Grimaldo added a second just before the break.
Two goals in as many minutes from Anton Stach and Wout Weghorst had Hoffenheim level on the hour mark.
But Grimaldo struck again after 20 minutes to give unbeaten Leverkusen their sixth straight Bundesliga victory.
RB Leipzig suffered an unexpected 2-0 defeat against bottom strugglers Mainz.
Lee Jae-Sung and Leandro Barreiro scored in the closing stages to give new boss Jan Siewert a win in his first game.
Cologne are now bottom after a 1-1 home draw with Augsburg, while two early goals from Omar Marmoush steered Eintracht Frankfurt to a 3-0 win at Union Berlin.
After Vincenzo Grif’s last-minute penalty, Freiburg fought back to draw 3-3 with Borussia Monchengladbach.
In LaLiga, Ronald Araujo’s late header gave Barcelona a 1-0 win at Real Sociedad.
The defending LaLiga champions had captain Marc-Andre ter Stegen to thank after the German goalkeeper made several crucial saves to keep a spirited Sociedad side at bay.
Xavi’s men struggled to muster any real openings until the final embers of the match and cruelly claimed all three points when Araujo planted a powerful header between the legs of goalkeeper Alex Remiro, initially ruled out for offside, in what was effectively a last-ditch attack to seal a 1-0 win .
Leaders Girona cemented their place at the top of the table with a 4-2 win at Osasuna.
Youssef En-Nesyri scored a late equalizer as Sevilla fought back to draw 1-1 against strugglers Celta Vigo, who had midfielder Renato Tapia sent off midway through the second half.
William Jose and Ayoze Perez were on target as Real Betis beat 10-man Mallorca 2-0 to stay fifth.
Udinese increased the pressure on AC Milan boss Stefano Pioli with a 1-0 win at the San Siro, their first Serie A win of the season.
Roberto Pereyra’s penalty just after the hour proved decisive as the Rossoneri slumped to a second successive home defeat and extended their winless run to four games in all competitions.
Inter Milan stayed top of the table with a 2-1 win over Atalanta in heavy rain at the Gewiss Stadium.
Hakan Calhanoglu’s penalty broke the deadlock five minutes before half-time and Inter captain Lautaro Martinez doubled his side’s lead in the 57th minute.
Gianluca Scamacca quickly scored but Inter wrapped up the win and Atalanta substitute Rafael Toloi was sent off for a second yellow late on.
Reigning champions Napoli earlier moved into the top four with a 2-0 win at Salernitana thanks to a first-half goal from Giacomo Raspadori and a late strike from Elif Elmas.
In Ligue 1, Marseille played to a goalless draw at home with Lille.
It was the first game at the Stade Velodrome since the game against Lyon, which was called off after the visitors’ team bus was pelted with stones on the way to the ground and coach Fabio Grosso suffered facial injuries.
Earlier it also ended 0:0 between Lorient and Lens.