The hosts missed a penalty early on with Szabolcs Huszti denied by Bernd Leno before Gonzalo Castro's deflected effort put Leverkusen in front, rather against the run of play.
Artjoms Rudnevs levelled, but he then wasted the best chance to win the match late on with Tayfun Korkut's men closer to victory.
Leverkusen made a nervous start to the game and were lucky not to find themselves behind after only four minutes when Roberto Hilbert fouled Christian Schulz inside the area.
Huszti stepped up to the spot, but Leno denied him with his fourth successful penalty save of the season.
Leverkusen gained belief and a certain degree of confidence from the miss and they took the lead just shy of the half hour, capitalising on a mistake by Ron-Robert Zieler.
The Hannover goalkeeper's throw out was intercepted with Castro picking up the ball 20 yards from goal, and his shot deflected past the wrong-footed Hannover goalkeeper.
It was just the stroke of luck Leverkusen needed after the worst fortnight in their season, but the goal served to wake Hannover up, and they levelled five minutes later.
Rudnevs was given the run of the field, and he took his time before setting aim for the left-hand corner, beating Leno with an accurate effort from 25 yards out.
Hannover could have gone in at the break ahead, but Andre Hoffmann's volley on the turn hit the inside of the post, bouncing back into the arms of a relieved Leno.
Hannover continued to look the stronger in the second half, but not until Didier Ya Konan came on in the final five minutes, were they able to cause the Leverkusen rearguard problems.
The Ivory Coast forward set up Rudnevs for what looked like being the winner, but he shot straight against Leno with only the Leverkusen goalkeeper to beat, leaving both sides having to settle for a point.