Jan Schlaudraff's penalty 10 minutes from time earned Hannover a first-leg victory over Club Brugge in the Europa League round of 32.
The Bundesliga side, who are still unbeaten at home in their maiden Europa League campaign, fell behind to a Maxime Lestienne header early in the second half.
Substitute Artur Sobiech bundled home the equaliser after 71 minutes before Schlaudraff settled an action-packed encounter from the penalty spot.
But the tie remains in the balance, with Brugge carrying Lestienne's crucial away goal with them into next week's second leg.
The eventual winners will be away to either Wisla Krakow or Standard Liege in the last 16.
Hannover made a bright start, with Lars Stindl forcing Brugge goalkeeper Vladan Kujovic into action with an early strike from the right-hand edge of the box.
Kujovic then pulled off a smart save to deny Mame Diouf from six yards after the Hannover striker had been picked out in the box by Steve Cherundolo.
Brugge then laid siege to the Hannover goal, winning a succession of corners after Lior Rafaelov's long-range strike had been turned around the post by Ron-Robert Zieler.
But Hannover defended them well as Sergio Pinto and Manuel Schmiedebach both made timely clearances to ease the pressure before Konstantin Rausch fired over the bar for the Germans.
Brugge eventually broke the deadlock five minutes into the second half when Lestienne met Fredrik Stenman's cross and planted his header into the top corner.
Sobiech was sent on for Sergio Pinto after 68 minutes and he made his presence felt almost immediately, drawing Hannover level and then winning the penalty for Schlaudraff.
The Brugge defence failed to deal with a dangerous free-kick from Christian Pander, which he sent in from the right flank and Sobiech pounced on the loose ball to score from close range.
Seven minutes later, Sobiech was brought down in the box by Ryan Donk, who became one of eight players booked, and Schlaudraff drove his penalty right-footed past Vladan Kujovic in the Brugge goal.