The win puts Freiburg level on 45 points with Schalke 04, who occupy the fourth and final Champions League qualifying place, and takes them three points ahead of Eintracht Frankfurt who visit lowly FC Augsburg on Sunday.
An early own goal by Hanover's Christian Schulz and strikes by Max Kruse just before the break and Jonathan Schmid late in the game earned Freiburg the points.
Schulz's bizarre own goal, after Hanover keeper Ron-Robert Zieler fluffed a seemingly harmless cross, put Freiburg in the driving seat after 24 minutes.
Zieler completely misjudged the ball and the surprised Schulz, standing at the far post, watched the ball bounce off his foot into the net.
Freiburg, outstanding this season under 2012 coach of the year Christian Streich, had been the better side from the start but 12 minutes later it was their turn to give away a goal.
A poor back-header from defender Pavel Krmas for keeper Oliver Baumann was intercepted by Mame Diouf who crossed to Konstantin Rausch for the equaliser.
Freiburg top scorer Kruse, snapped up this week by Borussia Moenchengladbach for next season, restored their lead just before the break, drilling a shot past three defenders and Zieler for his 10th goal of the campaign.
Germany international Zieler kept Hanover in the game when he pulled off three spectacular saves shortly after the restart, but could do nothing to stop Schmid's shot in the 73rd minute which sealed Freiburg's third consecutive league victory.
Bayern Munich, who secured a 23rd German title last week, host Nuremberg in the Bavarian derby on Saturday while fellow Champions League semi-finalists Borussia Dortmund, who are in second place in the standings, travel to Greuther Fuerth.