Joel Matip put Schalke ahead in the third minute, Greek defender Kyriakos Papadopoulos scored in the 57th, and Julian Draxler sealed the win by finishing a wonderful team move in the 80th.
Japan striker Shinji Okazaki scored an 87th-minute consolation for Stuttgart.
Freiburg climbed off the bottom of the table when 18-year-old Matthias Ginter headed an 88th-minute winner to beat Augsburg 1-0 and leave the visitors last.
Nuremberg beat Hertha Berlin 2-0 in its 1,000th Bundesliga game, Hoffenheim drew 0-0 with Hannover, and Wolfsburg beat Cologne 1-0.
Kaiserslautern hosted Werder Bremen later Saturday.
(For more sports news and updates, follow Ahram Online sports on Twitter: @AO_Sports)
Short link: