FRANKFURT, Germany -- Bayern Munich trailed twice but came from behind to beat Fortuna Duesseldorf 3-2 and close in on the Bundesliga title as defending champion Borussia Dortmund fell to a 2-1 loss at Schalke on Saturday.
Dortmund stayed second because Bayer Leverkusen also lost, 1-0 in Mainz. But Dortmund was now 20 points behind Bayern, which was seven points away from the title.
In other matches, Wolfsburg won 5-2 in Freiburg and Hoffenheim beat last-place Greuther Fuerth 3-0 to improve its chances of escaping relegation. The defeat at home all but doomed Greuther Fuerth, which was five points behind Hoffenheim and 14 points away from safety.
Werder Bremen came from behind to earn a 1-1 draw at Borussia Moenchengladbach in the late match.
Substitute Peniel Mlapa scored in the 72nd, two minutes after coming on, with a header after a corner.
Aleksandar Ignjovski levelled five minutes later for Bremen, connecting at the far post with a pass across the goal from Kevin de Bruyne to end his team's run of three straight losses. Defender Mateo Pavlovic blocked Mlapa's attempt at an empty goal in injury time.
Defender Jerome Boateng scored his first Bundesliga goal in the 86th minute to secure the victory for Bayern, which seemed to have one eye already on the Champions League match against Arsenal next week.
"We want to win every game," Boateng said. "We fell behind twice and we really had to run a lot and fight hard."
Bayern fell behind in the 16th when Mathis Bolly scored from close range as the defence appeared asleep. Thomas Mueller levelled the score shortly before halftime, after missing a couple of big chances.
Duesseldorf went ahead again through captain Andreas Lamberts in the 71st, before Bayern standout Franck Ribery brought his team back into the match two minutes later by drilling a shot into the roof of the net.
In the Ruhr derby in Gelsenkirchen, 19-year-old forward Julian Draxler celebrated his 100th match for Schalke by scoring in the 11th after connecting with a cross from Atsuto Uchida and driving the ball in with his right foot from close range.
Schalke dominated play and Draxler had another effort foiled by Dortmund goalkeeper Roman Weidenfeller, who had also turned away a volley by Klaas-Jan Huntelaar earlier.
But Huntelaar got his goal in the 35th, after another perfect cross from Uchida. Huntelaar was left unmarked by Neven Subotic and the Dutchman had little trouble heading home from point-blank range.
Dortmund, coming off an impressive 3-0 win over Shakhtar Donetsk in the Champions League, began the second half with much more determination and Timo Hildebrandt had to dive to intercept a pass intended for Robert Lewandowski.
Schalke then lost Huntelaar to a left knee injury.
In the 59th, Lewandowski cut the deficit when he beat Joel Matip's offside trap and slotted past Hildebrandt for his league-high 17th goal of the season.
Another error by Subotic allowed Draxler to play Teemu Pukki free, but his shot was blocked. Jefferson Farfan failed to make Schalke's win even more convincing when he sent his shot sky-high instead of into the empty net.
Pukki wasted another late chance but Schalke won its third in a row to climb to fourth, which means a slot in qualifying for the Champions League. Schalke plays Galatasaray in the last 16 on Tuesday. Hildebrandt protected the victory by stopping an effort by Lewandowski in the 88th with his shoulder.
"We got off to a really poor start and then we gave them chances because we'd thrown everything into attack," Dortmund coach Juergen Klopp said.
Schalke has beaten Dortmund twice this season, both times 2-1, in what are for the fans of both teams the matches of the year.
In Mainz, Andreas Ivanschitz converted a penalty in the 61st to snap his team's five-match winless streak.
Hoffenheim got goals from Roberto Firmino and Joselu to lead 2-0 by the 16th minute and Tobias Weis scored in the 51st to seal Hoffenheim's first win after four consecutive defeats.
Hoffenheim was two points behind Ausgburg, which holds 16th place.
Ivica Olic scored twice, including a spectacular overhead volley, to help Wolfsburg win in Freiburg.
Freiburg went ahead two minutes in, but Wolfsburg replied with three goals in the next 20 minutes.