Shinji Kawaga gave Dortmund the lead in the 11th minute but it was not until the 72nd minute that Lucas Barrios added the second.
Hannover's Karim Haggui was given his marching orders in the 77th minute and although Dortmund's Nuri Sahin failed to convert the ensuing penalty, they turned it into a rout as Robert Lewandowski added another in the 81st minute and Jakub Blasczcykowski wrapped things up as the seconds ticked down.
Dortmund's undefeated streak increased to 10 games with nine victories - including six straight away from home. The leaders - playing their fourth road match in a row including the German Cup and the Europa League - have 28 points for a four-point lead on second placed Mainz.
Hannover have lost four of their last five games - all of them without a goal scored to remain on 16 points in 10th place.
Dortmund dominated possession early on and took the lead after 11 minutes. Sahin passed to Kawaga, who turned left towards the middle and blasted his left-footed shot just inside the right post past Hannover keeper Florian Fromlowitz.
Japan international Kawaga missed two chances to double the advantage in the 24th minute, shooting over the crossbar from 18 yards and then striking just wide of the left post.
Hannover were unable to create many chances though Didier Ya Konen found a bit of space five minutes before the break but shot just over the bar from 15 yards.
Fromlowitz kept his team in the game with a double save in the 53rd minute, stopping Mario Gotze and Barrios, and then pushing Sahin's free kick over the bar 11 minutes later.
But Dortmund doubled the advantage after 72 minutes with a perfect counter-attack when Lukasz Piszczek broken down the right wing and his cross found Barrios, who fended off two defenders and poked home to make it 2-0.
Hannover went a man down six minutes later when Haggui kicked Blaszczykowski in the head while he was laying in the area.
Referee Felix Brych also awarded Dortmund a penalty but Sahin was unable to convert, striking his spot kick right at Fromlowitz.
Fromlowitz made another great save from Blaszczykowski in the 81st minute but Lewandowski was there to volley home the rebound and make it 3-0.
And Blaszczykowski finished off the scoring in the 90th minute, striking home a superb pass by Antonio da Silva.