Mats Hummels and Robert Lewandowski's second-half goals put Jurgen Klopp's men on their way to three points before Henrikh Mkhitaryan made sure of victory in the 83rd minute.
With Leverkusen losing at home to Mainz, Dortmund moved to second, but still a long way off runaway leaders Bayern Munich.
The hosts started brightly and Mkhitaryan was almost put through in the fourth minute, but Raphael Schafer was quick off his line to reach the ball first.
Dortmund were presented with a good opportunity when an intervention from Martin Angha was regarded as a backpass by the referee, providing an indirect free-kick right on the edge of the six-yard box, but Javier Pinola blocked Lewandowski's effort on the line.
Shortly after Lewandowski teed up Mkhitaryan, but his shot was blocked by Schafer.
Tomas Pekhart was suddenly provided with the chance to put Nurnberg in front when a slack pass from Sokratis Papastathopoulos to Hummels was intercepted and the Nurnberg forward's shot was touched on to the outside of a post by Roman Weidenfeller.
For the 20th time this season, the Bavarians were denied by the woodwork.
Dortmund took the lead when Sahin's free-kick was met by the head of Lewandowski and Schafer kept it out with his arm, but Hummels followed in to ensure the ball crossed the line from point-blank range.
The offside flag should have been raised against Lewandowski, but it did deny Mkhitaryan a second goal for Dortmund minutes later when he was put through on goal.
There were no doubts about the goal which Lewandowski scored in the 64th minute, curling in from 20 yards after Mkhitaryan's pass, his 15th of the season.
Mkhitaryan got his name on the scoresheet in the 83rd minute, with Sahin lifting the ball over the top for Jonas Hofmann, who played the ball into the path of the Armenian to slide the ball into the near post and complete the victory.