Mario Goetze scored the winner on the hour-mark to give Dortmund its first victory in four league games and keep the side three points ahead of his former club Bayern Munich, which had moved level with a 1-0 win over Hertha Berlin on Saturday.
Dortmund, which was leading the Bundesliga by nine points at one stage, was without a win in five games across all competitions.
Leverkusen had been on a four-game winning run under new coach Peter Bosz, who was fired by Dortmund in December 2017, when the side was undergoing its last major winless run.
The Dutch coach was given a warm welcome on his return, and his new side quickly showed what could have been as it dominated the opening 25 minutes. The visitors pressed and harried their opponents, circulated the ball to keep them chasing, and kept Dortmund pegged back with no time for respite.
“We didn’t have control of the game. Leverkusen had that,” Dortmund sporting director Michael Zorc said.
Sven Bender went close against his former side before the 19-year-old Kai Havartz flashed a shot just wide.
Then Leverkusen dropped intensity for a few minutes. Jadon Sancho tested goalkeeper Lukas Hradecky in the 28th, Julian Weigl was blocked by Jonathan Tah, and Dan-Axel Zagadou scored from close range in the 31st after Sancho whipped in a corner.
But Sancho restored Dortmund’s lead a minute later when he was left free to meet Abdou Diallo’s cross with a brilliant volley inside the far post.
The second half was more balanced and Goetze scored what proved to the winner when Achraf Hakimi’s cross was deflected into his path to shoot inside the left post.
Paco Alcacer thought he’d scored minutes later after some wonderful combination play in the buildup from Dortmund, but the Spanish striker had strayed just offside before he rounded Hradecky. It meant the former Barcelona striker, who started with 12 goals in his first 11 Bundesliga appearances, hasn’t scored in seven since.
Tah pulled one back for Leverkusen with a header off Julian Brandt’s simple free kick to the back, but this time there was no late collapse from the home side. Dortmund conceded three late goals in its previous home game to draw 3-3 with Hoffenheim.
Eintracht Frankfurt won 3-0 at Hannover in the earlier game.