Bayern Munich's last-gasp 2-1 win at Werder Bremen earlier in the day put the onus firmly back on Dortmund, who needed just one win from their last three matches to seal a second straight title.

Ivan Perisic and Shinji Kagawa both got onto the scoresheet as celebrations broke out at Signal-Iduna-Park.

Perisic nodded home in the 23rd minute before Japan international Kagawa wrapped up the scoring with a second.

Dortmund will meet Bayern in the DFB Pokal final which would mark the club's first ever cup double if they are to win it.

A second-string Bayern outfit left it late to pick up the three points at Bremen, with Franck Ribery's stoppage-time winner momentarily keeping Bayern's slim title hopes alive.

Bremen defender Naldo put the hosts ahead in the 51st minute from a set piece but had the final touch into his own net 15 minutes from time to equalise for Bayern.

Stuttgart's Champions League qualification hopes were all but dashed after a 1-1 draw at Cologne.

That played into the hands of Bayer Leverkusen who won 1-0 at Hoffenheim after Andre Schurrle struck 11 minutes from time.

Sejad Salihovic spurned Hoffenheim's best chance with a missed penalty in the 86th minute.

Bottom side Kaiserslautern posted their first win in 21 games, 2-1 against Hertha Berlin, after first-half goals from Oliver Kirch and Andrew Wooten.

In the other fixture Nuremberg and Hamburg played out a 1-1 draw.