Thomas Tuchel was hampered by injuries and absences, but his side's unimpressive defensive performance provided real cause for concern, as lowly Darmstadt carved them open at will and deservedly claimed a potentially vital win in their bid to avoid the drop.
Proceedings were particularly entertaining in the first half, with the rock-bottom hosts fully deserving of their opening goal that Terrence Boyd scored, but against a side with Dortmund's quality they were going to need to take full advantage of any chances.
But they did not, and Dortmund capitalised on a few let-offs by drawing level just before the break – Raphael Guerreiro blasting a ferocious effort in from 16 yards.
Dortmund failed to use that equaliser as a platform to build on, though, and they were just as bad after the break, Antonio Colak's controlled finish 23 minutes from the end a just punishment.
The away side poured men forward desperately towards the end, but they left it too late and Darmstadt held on for a huge win - the first under Torsten Frings - while Dortmund failed to capitalise on second-placed RB Leipzig dropping points.
Darmstadt's excellent start showed few signs of the form that has left them adrift at the bottom of the table.
Roman Burki was crucial to preventing their first chance from finding the net, as Boyd forced him into a smart save from close range after collecting Jan Rosenthal's flick-on.
Rosenthal then raced clear shortly after, latching on to Sidney Sam's throughball before smashing his effort on to the post with only Burki to beat.
And Dortmund failed to heed those warnings, with Darmstadt taking a deserved lead through Boyd after 21 minutes – the American collecting Marcel Heller's cut-back and finding the net despite Burki getting a hand to it.
Dortmund soon rallied and Marco Reus went close twice, first seeing Michael Esser's foot keep him at bay when played through by Pierre-Emerick Aubameyang, before then striking the crossbar with a 25-yard free-kick.
But the visitors eventually levelled just before the break – Guerreiro sending an emphatic half-volley past Esser after the ball broke kindly for him in the area.
Despite drawing level, Dortmund did not produce much of an improvement after the break and were lucky not to fall behind again in the 52nd minute – Rosenthal testing Burki from 18 yards after an accurate cut-back from Jerome Gondorf.
Rosenthal wasted another opportunity just after the hour mark, as he raced on to Heller's pass and drove wide from 20 yards.
But eventually Darmstadt punished Dortmund properly.
Hamit Altintop stole possession back in midfield and found Sam, who cleverly fed substitute Colak into the right side of the box and he provided a composed finish under Burki.
The hosts should have scored again shortly after, though Dortmund escaped as Colak struck the crossbar on the break and then both Burki and Matthias Ginter were forced into desperate blocks to prevent Gondorf and Rosenthal.