Hertha's Marco Richter struck twice in the second half as Hertha came from a goal down to score three times against a makeshift Dortmund defence.
The visitors, looking to close the gap with Bayern following their 4-0 win over VfL Wolfsburg on Friday, enjoyed a strong start even though in-form Jude Bellingham was missing due to suspension, and central defender Mats Hummels and keeper Gregor Kobel because of illness.
The hosts, however, equalised six minutes after halftime when Ishak Belfoldil slotted the ball under reserve keeper Marwin Hitz.
Richter put Hertha 2-1 up in the 57th minute with an outstanding finish, placing the ball into the top far corner.
The 24-year-old forward then thundered home on the rebound in the 69th with the Dortmund defence in chaos after an error by Brandt on the edge of the box.
Substitute Steffen Tiggen rose high to drill in a header and cut the deficit seven minutes from time
Dortmund are second on 34 points, with Bayern top on 43. Bayer Leverkusen, third on 28, are in action on Saturday against Freiburg. Hertha's win moved them away from the relegation zone and into 11th place on 21 points.
The league will resume on Jan. 7.