Bundesliga: Bayer Leverkusen 2 Dortmund 2
Leverkusen went into the game at the BayArena knowing a win would open up a three-point lead over nearest challengers Wolfsburg, who could only draw 2-2 with Freiburg earlier on Saturday.
But, in the hosts' first game since announcing the appointment of Roger Schmidt as coach for next season, interim boss Sascha Lewandowski wasted an opportunity to take another step towards sealing a place in next season's UEFA Champions League.
Midfielder Lars Bender netted after seven minutes to put Leverkusen ahead, before Oliver Kirch netted a leveller in the 29th minute.
Attacking midfielder Gonzalo Castro re-established Leverkusen's superiority 10 minutes prior to the interval, but a resilient Dortmund - whose build-up to the game was overshadowed by rumours linking coach Jurgen Klopp with the vacant position at Manchester United - earned a share of the spoils four minutes later through Marco Reus' penalty.
The result keeps Leverkusen a point clear of fifth-placed Wolfsburg ahead of their final two matches against Eintracht Frankfurt and Werder Bremen.
Reus tested the reflexes of Leverkusen goalkeeper Bernd Leno inside the first five minutes with a near-post drive, but it was the hosts who took an early lead through Bender.
Dortmund keeper Roman Weidenfeller produced a fine save to keep out Stefan Kiessling's volley, but the hosts kept the pressure on and Bender reacted quickest to a rebound after the striker hit the crossbar, finding the net despite the best efforts of Nuri Sahin on the line.
The hosts failed to build on that lead in an open first half, and Dortmund duly levelled matters just before the half-hour mark when Kirch turned Reus' left-wing free-kick into the top corner with an improvised backwards header.
Parity remained for just six minutes, as Castro restored Leverkusen's advantage by heading into the bottom corner following a well-worked move involving Son Heung-Min and Kiessling.
Again Leverkusen could not stay in front , though, and Dortmund equalised for a second time in the 39th minute as Reus coolly slotted home from the spot after defender Roberto Hilbert was ruled to have handled inside the area.
Reus continued to be the danger man for Dortmund and came close to giving the visitors the lead shortly after, only for Leno to deny him with a strong one-on-one stop.
Chances proved few and far between in a comparatively quiet second half, Kiessling heading way over from close-range in the 62nd minute before Henrikh Mkhitaryan forced Leno into a comfortable save with a tame effort from distance.
The best chance for a winner came in the 72nd minute as Julian Brandt broke free down the right, only for Weidenfeller to preserve a point with another superb stop, keeping Dortmund comfortably ahead of Schalke in second.