Bastian Schweinsteiger and Mario Mandzukic put Bayern two goals to the good after 22 minutes before Franck Ribery and Claudio Pizarro added further strikes in the second half to extend their unbeaten run in the Bundesliga to 31.
Both sides enjoyed winning starts to their UEFA Champions League campaigns in midweek and made one change from their European outings, with Schalke bringing in Jermaine Jones in place of Marco Hoger.
The champions named Schweinsteiger in their starting line-up, with Thomas Muller dropping to the bench.
David Alaba almost made it two goals in four days after nine minutes, flashing a free-kick just wide for the visitors, before Toni Kroos curled over from inside the box on what was his 150th Bundesliga appearance.
Adam Szalai should have opened the scoring 16 minutes in, but he failed to connect sufficiently with a Kevin-Prince Boateng cross and Bayern were able to clear.
But the visitors did edge ahead 21 minutes in courtesy of the returning Schweinsteiger.
Arjen Robben's corner found the unmarked midfielder, who headed into the far corner of the goal beyond the despairing lunge of defender Astuto Uchida on the line.
Mandzukic doubled Bayern's lead just a minute later, again through a header, this time from Alaba's delivery.
The Croatia international's effort beat Timo Hildebrand before striking Benedikt Howedes on the line and dribbling in.
Schalke had not conceded in three games going into Saturday's clash and will have been relieved to see Robben's strike deflected wide just short of the half-hour mark.
Mandzukic shot over from inside the area after good work from Robben on the right six minutes after the break as Pep Guardiola's side pressed for a third.
While the hosts had plenty of possession, they were unable to make it count, with their final ball letting them down as they searched for a way back into the game.
Boateng's off-target header from a Julian Draxler cross just after the hour was their first opportunity of the half but Bayern's lethal touch was soon evident again after 74 minutes.
Alaba played the ball from the left across the box to the arriving Ribery and, despite a less-than-perfect touch from the France international, the ball rolled past Hildebrand to put the visitors 3-0 up.
Pizarro added a fourth seven minutes from time with a simple tap-in after good work from fellow substitute Muller to beat Hildebrand, as Bayern made it five wins from six in the league this season.
They share the same points and goal difference as Dortmund, who were held 1-1 by Nuremberg.
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.