In a game they had to win to keep the pace in the title race, Dortmund’s calamitous defending saw them slump to a sixth defeat of the season and fall further behind league leaders Bayern Munich.
They are now nine points adrift of the top, with their lead over third-placed Leverkusen slashed to just five points.
Much had been made of Haaland’s absence, but it was fellow convalescent Mats Hummels who was more sorely missed, as Dortmund’s back line self-immolated in the first half.
Hummels’ replacement, Dan-Axel Zagadou, handed Leverkusen the opener on a plate after just 10 minutes in a comedy of defensive errors.
Too hesitant on the ball after a short goal-kick, Zagadou gave the ball away cheaply in his own box, allowing Patrik Schick to shoot unchallenged from point-blank range.
As goalkeeper Gregor Kobel dived full-length to parry the shot, Manuel Akanji hurried back to help, only to end up bundling the ball into his own net.
Another own goal at the opposite end brought Dortmund level a few minutes later, Jeremie Frimpong flicking a Julian Brandt free-kick past his own goalkeeper.
But Leverkusen had smelt blood, and took the lead again with a devastating counter-attack, the entire front line linking up to provide Florian Wirtz with a tap-in.
Leverkusen midfielder Robert Andrich crowned a disastrous first half-hour for Dortmund when he curled a direct free-kick into the top corner from the edge of the area.
Booed off at half-time by their own fans, Dortmund briefly rallied at the start of the second half, before going 4-1 down on 53 minutes.
Having failed to properly clear a Leverkusen corner, the home side watched helplessly as Jonathan Tah sent a fantastic volley fizzing under the crossbar.
The return of US international Giovanni Reyna after six months out with injury provided some brief cheer on the hour mark, and both he and Jude Bellingham came close to scoring in the last quarter of an hour.
Leverkusen twisted the knife when Diaby netted a fifth on the counter-attack a few minutes from time, before Steffen Tigges grabbed a consolation tap-in.