Dortmund s German defender Mats Hummels reacts after the German first division Bundesliga football match between Borussia Dortmund and SV Werder Bremen in Dortmund, western Germany, on August 20, 2022. AFP
Scottish forward Oliver Burke scored the winning goal in the fifth minute of injury time, two minutes after Niklas Schmidt had equalized. English defender Lee Buchanan started the remarkable comeback when he scored in the 89th for the promoted visitors.
Dortmund, which was outplayed for much of the game, looked on course to win 2-0 thanks to speculative goals from Julian Brandt in first-half injury time and Raphael Guerreiro in the 77th. They were the home team's first and second shots on target.
Dortmund's much-vaunted offense looked short of ideas against Bremen, who had the best chances of the first half through Marvin Ducksch, back at his hometown club.
But Brandt scored just before the break, when the Bremen-born midfielder eluded a couple of defenders just outside the penalty area before shooting inside the far post.
Bremen remained the better side, having a penalty appeal waved away before Niko Schlotterbeck made a crucial block to deny Anthony Jung.
Dortmund coach Edin Terzic reacted with three substitutions with 30 minutes remaining, among them American Gio Reyna, who came on for his first competitive appearance since April 8, when he reinjured his right hamstring after less than two minutes in Stuttgart.
Guerreiro's goal was another long-range effort. Bremen 'keeper Jiri Pavlenka wasn't helped with his own defenders blocking his view.
Buchanan began Bremen's comeback amid some indecisive defending and the visitors pushed on in injury time.
Bayer Leverkusen slumped to its third consecutive Bundesliga loss - after being knocked out in the first round of the German Cup - when sharp-shooting Hoffenheim racked up a 3-0 win.
Christoph Baumgartner scored early with his heel when he was one of two Hoffenheim players facing seven Leverkusen defenders, Andrej Kramaric made-2-0 in the 35th and Georginio Rutter scored with a brilliant shot from distance in the 78th.
Leverkusen hadn't played badly and the home team's afternoon was summarized when Kerem Demirbay hit the post with a free kick.
Schalke forward Simon Teerode squandered two penalty opportunities in a 0-0 draw in Wolfsburg.
Koen Casteels saved Teerode's first effort, but the Schalke forward was given another chance as the Wolfsburg 'keeper had moved off his line. Casteels then also saved the next effort - within the rules this time.
Vincenzo Grifo's early goal was enough for Freiburg to win in Stuttgart 1-0, and Mainz won 2-1 in Augsburg.
Union Berlin was hosting Leipzig later.
(For more sports news and updates, follow Ahram Online Sports on Twitter at @AO_Sports and on Facebook at AhramOnlineSports.)