An early Admir Mehmedi header and a late breakaway goal from in-form Javier Hernandez sealed a deserved win for Roger Schmidt's side, who produced their best performance of the season.
On the other hand, Thomas Tuchel's side just wasn't at the races during the game and never looked like they were going to score until late in the second half as they lost their second game of the season.
Mehmedi gave the hosts the perfect start
The hosts made a very bright start to the game, pressing the high-flying visitors high up the pitch and they almost took the lead when a Hernandez header forced Roman Bürki into making a fantastic low save which went for a corner.
From the resulting corner though the hosts did take the lead as Mehmedi guided his header into the top corner of the net after escaping his man in the box to give his side the perfect start in such a big game.
The visitors struggled to create much throughout the first half
The goal woke the visitors up as they started to keep the ball much better and they almost got back on level terms when Pierre-Emerick Aubameyang was played in behind the host's defence but his shot was hit straight at Bernd Leno, who didn't have to move.
The hosts though showed real intensity throughout the half which it made it incredibly difficult for the visitors to create very many chances.
This was until a great pass from Aubameyang found Ousmane Dembele in space inside the box but the young winger put his shot well over the bar when he should have done so much better.
That was to be the last chance that the visitors could create in the first half as the hosts probably played their best half of football so far this season in terms of commitment that the crowd loved to see.
Visitors not at the races
It was much the same from Dortmund at the start of the second half as they really struggled to get anything from a well-drilled Leverkusen defence.
The hosts had the first chance of the second half when Dortmund old boy Kevin Kampl forced Bürki into making a good save from outside the box.
Finally, Dortmund created their first meaningful chance of the second half after the 70th minute when Aubameyang outpaced the two Leverkusen centre-backs and raced through on goal but Leno spread himself well and kept the ball out of the net somehow.
Hernandez scored on the break to double the host's lead
Tuchel's side continued to throw players forward to try and get an equaliser but in doing that they were caught on the break and Hernandez doubled the host's lead.
Hakan Çalhanoğlu was played through on the left-hand side and he played a lovely cross into the striker's path in the box to tap the ball into an empty net to give the team exactly what they deserved.
It was just one of those days for Dortmund as even when Leno made a big mistake from a cross from Dembele it just wouldn't fall right for Aubameyang to put it into the net.
Before the end of the game, the host's should have made it three when a lovely run from Kevin Volland, who came on as a second half substitute, into the box resulted in him being one on one with Bürki but somehow he hit his shot straight at the big goalkeeper with the goal at his grasp.
This was the last chance of the game as Schmidt's side got a well-deserved win against a very good Dortmund side who just weren't at the races on the day.