Erling Braut Haaland netted twice on Saturday as Borussia Dortmund won 3-1 at RB Leipzig, who missed the chance to take top spot in the Bundesliga from Bayern Munich, while Schalke thrashed Hoffenheim to avoid a record-equalling 31st consecutive league game without a win.

The result means Bayern stay two points clear of second-placed Leipzig despite crashing to a 3-2 defeat at Borussia Moenchengladbach on Friday, while Dortmund are five points behind the European champions in fourth.

Haaland is the first player to score 25 goals in his first 25 Bundesliga games and the 20-year-old has now netted 35 goals in 34 games in all competitions for Dortmund.

England winger Jadon Sancho scored his second goal in as many games by firing home on 55 minutes after Haaland’s cross was deftly flicked into his path by captain Marco Reus.

Haaland headed in a Sancho cross to put Dortmund 2-0 up with 19 minutes remaining.

The Norwegian then darted onto Reus’s defence-splitting pass in the 84th minute to tap in his second goal, before Alexander Sorloth scored a late consolation for Leipzig.

“This win does us an awful lot of good,” said Dortmund midfielder Emre Can, who admitted the weeks since the sacking of head coach Lucien Favre last month following a 5-1 thrashing by Stuttgart were “not so easy”.

However, the win could have come at a cost as midfielder Axel Witsel was helped off after half an hour with an ankle injury.

Dortmund were the only side in the top four to win this weekend, as third-placed Bayer Leverkusen were held to a 1-1 draw by Werder Bremen and are now four points behind Bayern.

Schalke avoid unwanted record

Earlier, Schalke avoided an unwanted record as American teenager Matthew Hoppe netted a hat-trick in a 4-0 thumping of Hoffenheim to lift his side off the bottom of the table.

“I was able to take my chances,” Hoppe said after becoming the first American to score a Bundesliga treble. “The win will give us confidence and some momentum. There are 19 games left, hopefully we can stay up in the first division.”

After enduring a 30-match winless run in the league, the Royal Blues enjoyed their first Bundesliga success in just under a year as 19-year-old Hoppe converted three chances created by Morocco’s Amine Harit, who scored the fourth goal.

After only his second game in charge, Schalke coach Christian Gross praised Hoppe and the “outstanding” display of goalkeeper Ralf Faehrmann.

“We have to build on the result. There are still a lot of difficult games to come,” Gross added, with Bayern Munich, who crushed Schalke 8-0 on the opening day of the season, visiting Gelsenkirchen in a fortnight’s time.

Before that, though, Schalke visit midtable Eintracht Frankfurt and host fellow strugglers Cologne. Mainz replaced Schalke at the bottom of the table after a 2-0 home defeat by Frankfurt.

Tasmania Berlin, who went 31 games without victory in the 1965/66 season, keep the Bundesliga record for longest winless run.

Hoffenheim were missing 11 players through either injury or suspension, while the hosts were captained by Sead Kolasinac who was making his first Schalke appearance since returning to the club on loan from Arsenal.

Hoppe broke the deadlock with a deft chip just before the break, then doubled the lead on 57 minutes when Harit’s pass again put him in behind the defence to calmly round Hoffenheim goalkeeper Oliver Baumann and slot into an empty net.

The American completed his hat-trick just after the hour mark when put into space by another sublime Harit pass to score with another dinked finish.

Harit completed the rout by striking a shot into the bottom corner 10 minutes from time.

After losses to Bayern and Frankfurt, Leverkusen drew with Bremen despite Patrik Schick’s equaliser after Omer Toprak put Bremen ahead with a free-kick.

Union Berlin are fifth after a 2-2 draw at home with Wolfsburg, who saw Maximilian Arnold sent off just after the break.

Freiburg set a new club record of five straight league wins, which has seen them climb from 14th to eighth in the table, with a 5-0 hammering of Cologne.