Bochum, who sit one spot and just two points above the relegation zone, scored after just five minutes, Anthony Losilla unleashing a screamer from outside the box.
Dortmund hit back immediately, Germany forward Karim Adeyemi tapping in after a length-of-the-field team move to make it 1-1.
Dortmund were camped in the Bochum penalty area in the final minutes and had the ball in the net through Mats Hummels, but the linesman’s flag went up immediately, with the defender standing half a metre offside.
Bayern can go one point clear in their bid for an 11th straight title by winning at home against last-placed Hertha Berlin on Sunday.
Dortmund came into the match knowing a win would send them four points clear.
But they arrived winless in their last five away matches in all competitions and faced a Bochum side kept out of the relegation places due to their strong home form.
Bochum made the most of a nervy start from the visitors, Losilla latching onto a poor Dortmund clearance to rocket the ball across Gregor Kobel and into the top left of the net.
Dortmund hit back 90 seconds later, Hummels curling a long pass to winger Donyell Malen on the right flank, who slipped his defender and sent the ball across.
Striker Sebastien Haller got a toe to the pass, guiding it into the path of Adeyemi, who tapped it in to level the scores.
With time winding down, Dortmund manager Edin Terzic brought on fresh legs, including captain Marco Reus and teenage striker Youssoufa Moukoko.
Moukoko, who scored a brace when the two sides met earlier in the season, almost had an immediate impact, forcing a reflex save from Manuel Riemann.
Riemann saved Bochum again less than a minute later, getting an outstretched hand to a curling shot from English teenager Jude Bellingham.
With one minute remaining, Hummels sent the visiting fans into raptures when he headed the ball into the goal, but his effort was chalked out for offside, a decision which will be celebrated in the Bavarian capital.
Terzic remonstrated with the referee, who went over to the sideline to explain the decision to the Dortmund boss, giving the protesting coach a yellow card in the process.
AFP