Japan midfielder Shinji Kagawa broke the deadlock in the 30th with a header off Dortmund defender Matthias Ginter's cross.

Klaas Jan Huntelaar equalized three minutes later after Mats Hummels gave the ball away. Leon Goretzka chipped forward for the impressive Leroy Sane, who headed the ball past Sokratis and gave Huntelaar a tap-in.

Ginter restored Dortmund's lead in the 43rd with a header from Henrikh Mkhitaryan's corner and Aubameyang made it 3-1 in the 48th. Mkhitaryan sent a loose ball forward and Gonzalo Castro timed his pass perfectly for Aubameyang to score inside the far post.

The Gabon striker, who has 22 goals in 20 competitive games for Dortmund this season, celebrated by taking off his jersey to reveal a Batman logo and the words ''Do you remember'' referring to the last Ruhr derby where he celebrated scoring with a Batman mask. Aubameyang was booked for Sunday's gesture.

Schalke goalkeeper Ralf Faehrmann kept his team in the game with saves from Ilkay Gundogan and Mkhitaryan before Huntelaar claimed his second with a classy chip in the 70th to set up a tense finale.

''You could see we were perhaps lacking a little experience, that we conceded so soon after the break,'' Schalke coach Andre Breitenreiter said. ''But we showed great morale to come back.''