(CNN) -- Bayern Munich may be leading Germany's bid for success on European football's main stage, but Borussia Dortmund rule the roost domestically after winning the Bundesliga title for the second successive season on Saturday.
Champions League semifinalists Bayern made sure their rivals would have to get a result in the late kickoff by snatching a last-gasp 2-1 win at Werder Bremen, but Dortmund retained the crown with two matches to spare in front of their home crowd after a 2-0 victory over Borussia Monchengladbach.
It put Jurgen Klopp's team eight points clear of Bayern, who go to Spain on Wednesday holding a 2-1 advantage over Real Madrid with the added incentive of a final at Munich's Allianz Arena on May 19.
Dortmund failed to make it past the group stages of Europe's top club competition this season, but have won 23 of 32 matches in the German league and will face Bayern in the final of the German Cup on May 12.
Croatia midfelder Ivan Perisic opened the scoring in the 23rd minute with a header from Marcel Schmelzer's free-kick, while Japan international Shinji Kagawa settled any nerves of the 80,720 sellout home crowd at Signal Iduna Park with the second goal on the hour mark to seal the club's eighth title since forming in 1909.
Dortmund fans also cheered the return of 19-year-old Germany international Mario Gotze, who made his comeback as a substitute in the final 15 minutes having been sidelined by injury since mid-December.
The victory extended Dortmund's unbeaten league run to 26 matches, and ended Bayern's slim hopes of a first title since 2010 and 23rd overall.
Jupp Heynckes' team needed a stoppage-time goal from Franck Ribery, who followed up his opener against Real last Tuesday by dealing a major blow to eighth-placed Werder Bremen's hopes of Europa League football next season.
Brazil defender Naldo put the home side ahead in the 51st minute, but diverted a cross by substitute Ribery into his own net with quarter of an hour to play.
Ribery had been rested along with Arjen Robben -- who the France international reportedly fought with during the halftime break against Real and was fined, according to German reports.
But Ribery struck in the final seconds to put Bayern 10 points clear of third-placed Schalke, who travel to fourth-bottom Augsburg on Sunday.
Monchengladbach stayed a point behind Schalke, and facing an uphill battle to qualify for the Champions League.
Stuttgart drew 1-1 at third-bottom Cologne and stayed in fifth ahead of Bayer Leverkusen, who won 1-0 at Hoffenheim.
Second-bottom Hertha Berlin's hopes of staying in the top flight suffered a big blow after a 2-1 home defeat by already-relegated Kaiserslautern.