Gladbach looked to be down and out after Lewandowski and Goretzka fired Bayern into a two-goal lead.
But Hofmann twice ran onto Stindl passes to draw Gladbach level before half-time.
And after three consecutive comeback wins for Bayern, the champions were on the receiving end as Neuhaus fired a second-half winner which the home side bravely protected.
Rather than threaten to pull clear of Leipzig ahead of their meeting with Dortmund, Bayern have opened the door to the chasing pack.
Leipzig will top the table if they can beat BVB on Saturday. Gladbach stay seventh but are now just a point behind fourth-placed Dortmund.