In a heated "Mother of all Derbies" that prompted crowd trouble before the game and flares in the stadium, Robert Lewandowski and Felipe Santana scored either side of half-time to lift Dortmund to 29 points.
Borussia Monchengladbach are in second place, also on 29 from 14 games, after beating Cologne 3-0 away on Friday. Schalke are fourth on 25.
"We played a huge game today and everything went according to plan," Dortmund coach Jurgen Klopp told reporters.
"The goals were outstanding in a match that was good from the first to the last minute. We fully deserved this win."
Bayer Leverkusen and Hertha Berlin settled for a 3-3 draw in an exciting game in the capital, with Eren Derdiyok scoring a hat-trick to put Leverkusen 3-2 up after trailing by two goals.
Hertha's Pierre-Michel Lasogga grabbed his second goal of the game and sixth of the season eight minutes from time to rescue a draw.
Hertha also missed a penalty, with Leverkusen goalkeeper Bern Leno saving Levan Kobiashvili's spot-kick and shot on the rebound.
Freiburg snatched a 90th minute goal through Garra Dembele to draw 1-1 at Hoffenheim, while Nuremberg beat Kaiserslautern 1-0 to move away from the drop zone.
In the final game on Saturday, Hamburg SV continued their recovery, securing a 1-1 draw at Hannover 96 thanks largely to keeper Jaroslav Drobny's superb saves. The result extended their undefeated run to six successive league games.
Promoted Augsburg celebrated their second win of the season, beating troubled VfL Wolfsburg 2-0, but are still stuck in last place on 11 points from 14 matches.
In Dortmund, the hosts looked livelier than Schalke from the start despite a string of injuries and their midweek defeat by Arsenal in the Champions League, which has left qualification for the last 16 looking difficult.
Playmaker Mario Gotze, injured in that game, was fit again, as was forward Lucas Barrios, making his first start since an injury during the Copa America.
It was forward Lewandowski, however, who broke the deadlock with a close-range header for his ninth goal of the season in the 16th minute in front of a sell-out 80,720 crowd.
Gotze should have added another on the half-hour mark but his chip from eight metres out was blocked by keeper Lars Unnerstall, who was kept busy throughout.
Brazilian Santana did grab a deserved second goal and his first of the season, firing in on the rebound after Unnerstall had denied Barrios from point-blank range.
"I saw an adult team play against a school team in the first half," Schalke coach Huub Stevens told reporters.
"Maybe three or four of my players played their full level. That is far
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.