Harry Kane missed from the spot, Fábio Silva struck in the 89th minute, and the Bundesliga's top two finished exactly where they started: level on points. Bayern Munich's 2-2 draw with Borussia Dortmund also opened the door for Freiburg to move within two points of the leaders. Stuttgart put four past Bayer Leverkusen, Elversberg answered a heavy defeat with a 4-1 win, and Eintracht Frankfurt beat Hamburg to close the weekend. The nine games from 30 October to 1 November produced 28 goals, three home wins, three away wins, three draws and one red card. Here is how every game played out in the Bundesliga, in kick-off order.
Bundesliga Matchweek 8 results at a glance
Bundesliga Matchweek 8 results, in kick-off order:
- Elversberg 4-1 Mainz
- Schalke 04 0-2 RB Leipzig
- Werder Bremen 2-0 Hoffenheim
- Borussia Mönchengladbach 0-0 Paderborn
- Augsburg 1-2 Freiburg
- Bayer Leverkusen 2-4 Stuttgart
- Bayern Munich 2-2 Borussia Dortmund
- Union Berlin 1-1 FC Cologne
- Eintracht Frankfurt 3-1 Hamburg
Every stat for all 9 games is on the Bundesliga Matchweek 8 fixtures and results page.
Elversberg 4-1 Mainz
One week after losing 4-0 at Leipzig, Elversberg made sure that result did not define their next performance. Felix Keidel's seventh-minute free-kick set the tone. Francis Onyeka made it 2-0 in the 26th minute, assisted by David Mokwa, and Maurice Krattenmacher added the third before half-time. The hosts were already well clear by the interval. Cole Campbell provided the late flourish with Elversberg's fourth, set up by Nicholas Mickelson. Benedict Hollerbach replied for Mainz in stoppage time, before Stefan Posch was dismissed for a second yellow card at 90+5. Elversberg finished with 54 per cent possession and 13 shots to Mainz's ten. Elversberg had six shots on target to Mainz's two. Their fourth league win takes them to 13 points and seventh place, level on points with Leverkusen. Mainz slip to ninth on ten.

Schalke 04 0-2 RB Leipzig
Antonio Nusa supplied both the breakthrough and the assist that settled the game. He converted a 37th-minute penalty, then set up Rômulo's 78th-minute second as RB Leipzig followed their win over Elversberg with another clean-sheet victory. The visitors also won seven corners to Schalke's three and completed 559 passes to the hosts' 363. This was a convincing away performance. Leipzig had 60 per cent possession, 18 shots to six and ten efforts on target to Schalke's one. The expected-goals totals, 3.98 to 0.46, underline how much more threat the visitors carried. Leipzig climb to fourth on 15 points, three off the lead. Schalke drop to 17th on six points and have scored only four goals in eight league games. Finding a more reliable attacking threat remains an urgent task.

Werder Bremen 2-0 Hoffenheim
After his two penalties at Mainz last weekend, Niclas Füllkrug was decisive again for Werder Bremen. His 57th-minute opener, assisted by Karl Hein, broke a goalless game, and Eren Dinkçi added the second in the 82nd minute from a Marco Grüll assist. Dinkçi had entered much earlier than planned, replacing the injured Mitchell Weiser in the 16th minute. His goal ensured Bremen took full advantage of their second-half lead. Hoffenheim had 59 per cent possession, and the chance quality was close: 1.26 expected goals for Bremen and 1.18 for the visitors. Bremen were more effective in front of goal, with four shots on target to two, and climb to fifth on 15 points. Hoffenheim, who beat Leverkusen 3-0 in the previous round, finish this one 12th on nine.

Borussia Mönchengladbach 0-0 Paderborn
Gladbach's first league victory of the season was followed by a clean sheet, but not another three points. Borussia Mönchengladbach and Paderborn each managed four shots on target. Paderborn had more possession, 57 per cent, and edged the shot count 13 to 12, while Gladbach recorded the higher expected-goals total, 1.40 to 0.86. Paderborn lost Marvin Pieringer to an injury substitution in the 52nd minute, bringing on Steffen Tigges. They won seven corners to Gladbach's four, and completed 513 passes to 381 for Gladbach, but could not turn their greater share of the ball into a goal. Neither side found a breakthrough, although both registered an effort on target in stoppage time. Gladbach remain bottom on four points, two behind Schalke; Paderborn are 14th on nine.

Augsburg 1-2 Freiburg
Freiburg's bench changed both the match and the picture near the top of the table. Michael Gregoritsch put Augsburg in front in the 18th minute, finishing after an Arijon Ibrahimović assist. Freiburg introduced Igor Matanović at half-time, and he equalised in the 65th minute, assisted by Yannik Engelhardt. Cyriaque Irié then arrived in the 83rd and headed the winner just two minutes later, with fellow substitute Vincenzo Grifo supplying the assist. Augsburg registered more shots, 14 to 10, but Freiburg's chances were worth 1.56 expected goals to the hosts' 0.97. The visitors scored with both of their recorded shots on target. After last week's defeat by Bayern, this was a valuable recovery: Freiburg stay third on 16 points, only two behind Bayern and Dortmund. Augsburg end the weekend tenth on nine.

Bayer Leverkusen 2-4 Stuttgart
Stuttgart needed a response after losing 3-2 at home to Gladbach in Matchweek 7. They delivered it with the highest-scoring game of this round. Ermedin Demirović opened the scoring after 14 minutes and Jamie Leweling doubled the lead eight minutes later. Patrik Schick's 28th-minute header, from an Aleix García assist, gave Bayer Leverkusen a route back into the contest, but Stuttgart took control again after the interval. Bilal El Khannouss scored in the 51st minute from a Chris Führich assist, then Demirović added his second in the 65th to make it 4-1, set up by Deniz Undav. Ibrahim Maza's header, assisted by Miguel Gutiérrez in the 79th, reduced the deficit without changing the outcome. Leverkusen had 63 per cent possession, 24 shots and 12 corners. Stuttgart, however, generated the better chances, recording 3.82 expected goals against 2.16. Demirović now has back-to-back league braces, and this time his two goals came with three points. Stuttgart finish the round 11th on nine points; Leverkusen fall to sixth on 13 after conceding seven goals across their last two league matches.

Bayern Munich 2-2 Borussia Dortmund
For Bayern, this will feel like an opportunity lost. For Dortmund, a late escape could hardly have been better timed. Konrad Laimer put Bayern Munich ahead in the 38th minute, and Harry Kane had the chance to double the lead from the penalty spot after the break. Instead, his 56th-minute effort hit the woodwork. Four minutes later, Serhou Guirassy equalised, set up by Carney Chukwuemeka, for Borussia Dortmund. Dayot Upamecano restored Bayern's lead in the 66th minute from a Kane assist, only for substitute Fábio Silva to make it 2-2 in the 89th, assisted by Konstantinos Karetsas. He had come on in the 76th minute and supplied the intervention that kept Dortmund alongside Bayern at the top. The chance figures explain Bayern's frustration: 23 shots to 12 and 3.97 expected goals to Dortmund's 0.63. Bayern created enough to win; Dortmund made their chances count. Both clubs remain unbeaten after eight league games, with five wins, three draws and 18 points apiece.

Union Berlin 1-1 FC Cologne
Janik Haberer gave Union Berlin a tenth-minute lead, assisted by Tim Skarke, but they could not turn that early advantage into a second league win of the season. FC Cologne had 63 per cent possession and 14 shots to Union's five. Their pressure eventually brought an equaliser through substitute Malek El Mala in the 79th minute, seven minutes after he came on, with Alessio Castro-Montes providing the assist. The visitors finished with 1.51 expected goals to Union's 0.80. A point leaves Cologne 13th on nine, while Union occupy the relegation play-off position in 16th on seven. For the home side, conceding late made this a frustrating afternoon despite taking something from the game. Cologne completed 638 passes at 89 per cent accuracy, compared with Union's 382 at 77 per cent.

Eintracht Frankfurt 3-1 Hamburg
Frankfurt closed Matchweek 8 with the win that carried them into the top half. A Warmed Omari own goal put Eintracht Frankfurt ahead in the tenth minute, but Terem Moffi equalised for Hamburg four minutes later, assisted by Albert Grønbæk. The sides went in level at half-time before Raphael Onyedika restored Frankfurt's advantage in the 47th minute. Younes Ebnoutalib made it 3-1 in the 69th, assisted by Can Uzun. Frankfurt recorded ten shots on target to Hamburg's three and led 2.38 to 1.48 on expected goals. After the narrow defeat at Dortmund in the previous round, this was a clear improvement in the result as well as the attacking return. Frankfurt move to eighth on 11 points. Hamburg are 15th on nine, two points above Union.

Bundesliga table after Matchweek 8, and what comes next
Bayern Munich and Borussia Dortmund remain first and second on 18 points, separated by goal difference. Freiburg are now within two points of both, while RB Leipzig and Werder Bremen sit a further point back. The Bundesliga table shows just three points separating the top five after eight games. Gladbach remain bottom on four points, behind Schalke on six and Union on seven. Six clubs above them are level on nine. Matchweek 9 runs from 6 to 8 November: Mainz v Bayern Munich, Borussia Dortmund v Elversberg and Freiburg v Union Berlin are among the fixtures. See the full Bundesliga fixtures for every game.