Borussia wrapped up their seventh Bundesliga title and their first since 2002 with two games to spare as they took an unassailable eight-point lead over four-times runners-up Leverkusen, who have still never won the German league.
First-half goals from Lucas Barrios, his 14th Bundesliga goal of the season, and Robert Lewandowski gave Borussia their win in front of more than 80,000 fans, leaving them with 72 points from 32 games.
The second half was played in a festive atmosphere, especially after Leverkusen fell behind in their game, and beer was poured over Dortmund coach Juergen Klopp by his players in the traditional post-match celebrations.
'Shouldn't happen again' - Lahm critical of Qatar World Cup over human rights record
"This is one of the most beautiful days, we have waited a long time for it," said Dortmund's sporting director Michael Zorc.
Leverkusen's hopes were sunk by two second-half goals from Milivoje Novakovic for a fired-up Cologne, playing their first game under interim coach Volker Finke after Franck Schaefer quit on Wednesday.
Borussia have won 22 of their 32 games and lost only four despite suffering long-term injuries to key players Nuri Sahin, Shinji Kagawa, Sebastian Kehl and defender Patrick Owomoyela .
But the team, which apart from goalkeeper Roman Weidenfeller has an average age of 22, never looked back after a win of seven straight wins early in the season.
Borussia made a cagey start at home to Nuremberg with Andreas Wolf twice going close for the visitors early on.
In Dortmund's first real attack, Barrios escaped with a yellow card after clipping Raphel Schaeffer with his right foot as the Nuremberg goalkeeper dived at his feet after he broke clear of the defence.
The breakthrough came shortly afterwards when Mario Goetze's low shot was saved by Schaeffer but ran straight to Barrios and the Paraguayan buried the ball in the back of the net.
Barrios could have added another with a far post header but saw the ball late and failed to connect properly.
But Dortmund struck again in the 43rd minute when a long clearance from Mats Hummels bounced over Lewandowski and Javier Pinola, but the quick-thinking Pole turned quickly and lobbed the ball over Schaeffer.
Leverkusen looked to have the upper hand as Stefan Kiessling hit the crossbar after halftime and Cologne goalkeeper Michael Rensing produced a superb-reflex save to turn away a Michael Ballack header when a goal looked certain.
Almost immediately, Novakovic opened the scoring to spark celebrations in both Cologne and Dortmund.
Renato Augusto struck the post for Leverkusen before Novakovic added a second, the Slovenian taking his season's tally to 16. The win lifted Cologne to 14th with 38 points, four clear of Eintracht Frankfurt.
In other games, Hanover 96's chances of finishing third and taking the Champions League qualifying spot were dented when they lost 1-0 at home to relegation-threatened Borussia Moenchengladbach, Marco Reus scoring a second-half winner.
Moenchengladbach, whose win followed a 1-0 victory over Borussia Dortmund last week, threw themselves a lifeline as they moved on to 32 points.
Although they are still in the relegation zone in 17th place, they moved within two points of Eintracht Frankfurt who were trounced 3-0 at Mainz where Colombian Elkin Soto scored twice after Andreas Ivanschitz had opened the scoring.
Eintracht, who occupy the relegation play-off place, had Sebastian Rode sent off before half-time for a professional foul.
Freiburg's Senegalese striker Papiss Cisse scored both goals in a 2-0 win at Hamburg SV, taking his tally to 22.
Ten Hag at Man Utd, the 'real' Messi and are Barca back? - The European Storylines we're watching
How to watch Euro 2022 final - England v Germany live on TV and live stream, kick-off time
Share this article