Salomon Kalou looked like he would haunt Dortmund again as his double saw the hosts twice move in front, the former Chelsea forward having scored a brace in October's reverse fixture.
Dortmund equalised on each occasion - Thomas Delaney and Dan-Axel Zagadou striking in either half – but had to wait until the final moments to secure victory when Reus side-footed into the bottom corner from Jadon Sancho's cross.
In a slump, that has also seen them exit the Champions League, Lucien Favre's men had only won two of their previous six league games, but they now hold the title-race advantage once again.
Hertha struck first in the fourth minute, when Maximilian Mittelstadt cut inside from the left and saw his low shot fumbled by Roman Burki, allowing Kalou to tap in the rebound from three yards.
Dortmund scored a fortunate equaliser 10 minutes later when Delaney made a key interception, charged to the edge of the box and sent in a left-footed shot that only beat Rune Jarstein courtesy of a massive deflection off Karim Rekik.
Jarstein made a key save from Jacob Bruun Larsen after he had been sent through by Reus, the second time the home goalkeeper had denied the Denmark youth international in the early stages.
At the other end, Hertha were awarded a 35th-minute penalty when Julian Weigl handled as he tried to block Ondrej Duda's cross, allowing Kalou to send Burki the wrong way from the spot.
A thrilling match was level again when Zagadou headed in Sancho's corner just 87 seconds into the second half, but Hertha were inches away from moving back in front after Marko Grujic hit the post from 15 yards.
Two key moments saw Duda have a penalty claim denied by referee Tobias Welz when he was brought down by Abdou Diallo, before the visitors launched an immediate counter, where Sancho somehow fired wide from a glorious chance.
Christian Pulisic could not convert three chances in quick succession while Delaney hit the bar as part of a frantic finale.
Hertha almost held on for a point despite Jordan Torunarigha receiving a second yellow card with five minutes left for fouling substitute Achraf Hakimi, before Vedad Ibisevic saw red for throwing the ball at Burki as frustration boiled over after Reus' winner.
In a frantic finale prior to his strike, Christian Pulisic could not convert three chances in quick succession while Delaney hit the bar, before the late drama sparked wild celebrations in front of the travelling support.