Mohammed Abdellaoue gave the visitors a shock lead in the 57th minute, but Dortmund controlled the rest of the game and deservedly took all three points to maintain their seven-point cushion at the top of the table with six games remaining.
Mario Gotze, Lucas Barrios (two) and Kevin Grosskreutz were all on target for Jurgen Klopp's men, who won for the first time in almost a month.
Bayer Leverkusen continued to cling onto the coat tails of Dortmund as they edged to victory at Kaiserslautern.
Sidney Sam scored the only goal of the game after 74 minutes to secure a hard-fought victory though Srdjan Lakic could have denied them when he hit the post late on.
Bayer find themselves on their own in third as Dortmund's victory over Hannover means they have a seven-point gap either side of them.
Arjen Robben scored the only goal as Bayern Munich moved into third place in the Bundesliga with a hard-fought win over bottom side Borussia Monchengladbach.
Bayern chairman Karl-Heinz Rummenigge yesterday ruled out selling Robben in the summer, even if the club fail to qualify for the Champions League next season.
And the Holland winger responded with the only goal of the game after 77 minutes as the home side took advantage of Hannover's 4-1 thrashing at Borussia Dortmund to climb above them in the table.
Torsten Frings' powerful strike earned Werder Bremen a deserved draw against Stuttgart in an unexpected relegation battle at the Weser Stadion
Fourth-bottom Stuttgart took the lead in the 13th minute through Hungary international Tamas Hajnal as the visitors attempted to pull away from St Pauli, whose game against Schalke was abandoned last night due to crowd trouble.
Hajnal lashed into the top-right corner from point-blank range but before Frings' long-range effort flew past him from outside the box after a cleverly worked corner in the 34th minute.
Mainz suffered a blow to their hopes of securing a European place after being held to a draw at home to Freiburg.
The early-season pacesetters, who started the season with seven wins in a row, have won only once at home since that unbeaten start was ended.
And they had to come from behind to grab a point after Papiss Demba Cisse put the visitors in front in the first minute, Sami Allagui heading the equaliser in the 75th minute.
Friday's Bundesliga game between St Pauli and Schalke was abandoned with two minutes to go because of crowd trouble at the Millerntor-Stadion which saw an object thrown at an assistant referee.
In a stormy game which saw the home side have a goal disallowed and two men sent off, Schalke were leading 2-0 when the action was halted after goals from Raul and Julian Draxler.
With moments to play, referee Deniz Aytekin took the players off the field after his assistant Thorsten Schiffner was struck by an object, apparently a mug of beer, thrown from the crowd.