Robert Lewandowski claimed his 15th goal this season in all competitions as Bundesliga leaders Bayern Munich came from behind to claim a 3-1 win at Stuttgart on Saturday.
Stuttgart striker Tanguy Coulibaly, 19, fired the hosts into a shock early lead after a cross caught Bayern centre-backs David Alaba and Jerome Boateng napping.
However, Kingsley Coman equalised with a superb low finish before Lewandowski drilled home from 20 metres to put Bayern 2-1 up at the break.
Brazil winger Douglas Costa, a second-half replacement for Coman, grabbed Bayern's third goal late on to seal a win which leaves the holders two points clear of RB Leipzig.
Dortmund are third, four points behind Bayern, after crashing to a shock 2-1 defeat at home to Cologne.
Tunisia midfielder Ellyes Skhiri tapped in both Cologne goals from corners by ex-Dortmund winger Marius Wolf after being left unmarked at the far post on both occasions.
With Dortmund 2-0 down on 60 minutes, coach Lucien Favre brought on three forwards -- 16-year-old sensation Youssoufa Moukoko, Giovanni Reyna and Thorgan Hazard.
Reyna, 18, set up Hazard to pull a goal back, but it was too little, too late.
After scoring six goals in his previous two games, Dortmund striker Erling Braut Haaland was held in check, squandering a golden chance to equalise just before the whistle.
Cologne avoided a club record 19th match without a win with their first victory in Dortmund since 1991.
Leipzig climbed above Dortmund to second, two points behind Bayern, thanks to a 2-1 home win over plucky strugglers Arminia Bielefeld.
Manchester City loanee Angelino gave Leipzig a first-half lead after a superb pass by 18-year-old Lazar Samardzic split the Bielefeld defence.
Just 60 seconds after coming off the bench, forward Christopher Nkunku netted Leipzig's second goal early in the second half.
However, Bielefeld, who are second from bottom, finished the stronger.
Their captain Fabian Klos pulled a goal back, just after Leipzig striker Alexander Sorloth had his penalty attempt saved on 73 minutes.
The Norway international, bought to replace Timo Werner who joined Chelsea in the summer, is yet to score in 10 games for Leipzig after netting 24 goals in 34 games for Trabzonspor last season.
Union Berlin are sixth after their action-packed 3-3 draw at home to Eintracht Frankfurt.
Max Kruse converted a penalty as Union raced into an early 2-0 lead, only for Portugal forward Andre Silva to net twice as Frankfurt led 3-2 late on.
Former Germany striker Kruse, 32, bagged a superb strike to claim his sixth goal in nine games to equalise just before the whistle.
Freiburg are winless in their last eight games after a 1-1 draw at Augsburg.
Wolfsburg are fifth after their 5-3 win over Werder Bremen on Friday.
Dutch striker Wout Weghorst struck twice for Wolfsburg while Bremen had goalscorer Kevin Moehwald sent off for a second booking.