Schalke won both derbies last season but BVB went ahead in the 14th minute when Pierre-Emerick Aubameyang tucked in Marco Reus squared pass on 14 minutes.
Nuri Şahin doubled the advantage with a great shot from outside the box and Schalke’s rising star Max Meyer pulled one back for Schalke, Jakub Braszczykowski made sure that Jürgen Klopp’s side wrapped up all three points.
Meanwhile, Bayern had to recover from Adrián Ramos’s fourth-minute goal to beat Hertha. Mario Mandžukić goals either side of the interval plus one from Mario Götze (54) put Bayern comfortably ahead, before Anis Ben-Hatira’s goal made it a nervy final minutes for Pep Guardiola’s side.
Ex-Bayern starlet Emre Can hit the winner seven minutes from time as Bayer Leverkusen came from behind to beat Augsburg, while a Roberto Firmino double helped THoffenheim get passed nine-man Hannover.