Harry Kane scored his third hat-trick of the season as Bayern Munich ended their three-match Bundesliga winless run with a 4-0 victory over Stuttgart at the Allianz Arena.
The England captain struck all three goals in the second half – adding to his treble against Holstein Kiel and a four-goal haul against Dinamo Zagreb.
Kingsley Coman added a fourth late on as Bayern ended the day top of the table on goal difference.
RB Leipzig had earlier won 2-0 at Mainz, with Xavi Simons and Willi Orban scoring in the first half.
Freiburg kept pace with the top two after a 3-1 home win over strugglers Augsburg, as Vincenzo Grifo, Philipp Lienhart and Christian Gunter were all on target before the break.
Champions Bayer Leverkusen came from behind to beat Eintracht Frankfurt 2-1 at the BayArena.
After Victor Boniface’s early penalty was saved, Omar Marmoush slotted in his spot-kick to put the visitors in front after 16 minutes.
Germany midfielder Robert Andrich equalised before the break, with Boniface nodding in the winner with 20 minutes left.
Tim Kleindienst scored twice as Borussia Monchengladbach beat Heidenheim 3-2 at the Westfalenstadion, while Hoffenheim saw off Bochum 3-1.
In Spain, Kylian Mbappe’s superb first-half goal helped Real Madrid claim a 2-1 win at Celta Vigo and keep the pressure on Barcelona at the top of LaLiga.
Mbappe, left out of the France squad over the international break after suffering a thigh injury playing for Real, put Los Blancos ahead in the first half when he lashed a 25-yard strike into the top corner.
Williot Swedberg drew Celta level early in the second half, but Vinicius Junior put Real back in front after 66 minutes as they moved level on points with Barca, who host Sevilla on Sunday.
Earlier on Saturday, Inaki Williams scored twice as Athletic Bilbao beat Espanyol 4-1 at San Mames to sit fourth.
Real Betis kept themselves in the top six after a 2-1 win at Osasuna, which was a first home league defeat of the season for Vicente Moreno’s side, while Mikel Oyarzabal’s first-half goal earned Real Sociedad a 1-0 win at Girona.
Juventus beat 10-man Lazio 1-0 with a late own goal to move level with Napoli at the top of Serie A.
Lazio saw defender Alessio Romagnoli sent off for tripping Pierre Kalulu as he went through on goal, but looked to be holding out for a point until with just three minutes left, Juan Cabal’s cross was turned in by the unfortunate Mario Gila.
Samuel Chukwueze’s early goal was enough for 10-man AC Milan to hold on to beat Udinese.
Chukwueze had put Milan ahead after 13 minutes at the San Siro. The Rosinerri, though, saw Dutch midfielder Tijjani Reijnders sent off just before the half-hour mark for denying a goalscoring opportunity.
Udinese looked to have snatched a late equaliser through Christian Kabasele in the fifth minute of stoppage time – but his header was ruled out following a lengthy VAR review for offside.
Andrea Pinamonti scored twice in the last 15 minutes as Genoa came from 2-0 down to draw 2-2 against Bologna.
Paris St Germain regained top spot in Ligue 1 table with a 4-2 victory over Strasbourg at Parc des Princes.
With Monaco having drawn with Lille on Friday, Luis Enrique’s side took full advantage as 18-year-old Senny Mayulu opened the scoring with his first league goal.
Marco Asensio, Bradley Barcola and Lee Kang-in were also on target, with Sekou Mara and Pape Diong scoring consolation goals for Liam Rosenior’s Strasbourg.
Lens earlier extend their unbeaten league record to eight matches with a 2-0 win at St Etienne, which leaves them fifth.