The 18-year-old England winger slotted the winner 16 minutes from time in the Ruhr derby in Gelsenkirchen, then pointed to the heavens before being buried under a pile of celebrating team-mates.

"The goal was for my grandmother, who died recently," he told reporters after netting his sixth goal of the season.

It has been an emotional few days for the teenager who flew to England to be with his family in mid-week, returning to Germany the day before the derby before netting a classy winner.

"He really wanted to play," said Dortmund coach Lucien Favre, while sports director Michael Zorc praised the "exceptional performance" by the England international.

Thomas Delaney's seventh-minute header for Dortmund had been cancelled out by a Daniel Caligiuri penalty just after the hour mark when Sancho struck, deftly rolling home following a beautiful one-two with Raphael Guerreiro.

"The second goal by Sancho was worked out incredibly well -- we do things like that in training," said Dortmund captain Marco Reus after his team's fifth straight league win.

"This victory gives us a lot of self-confidence and strength for the next matches.

"We want to remain unbeaten."

Dortmund preserved their record as the only unbeaten team in Germany's top tier after 14 games, while Schalke are now down to 14th, just three points from the bottom three despite having reached the last 16 of the Champions League.

"We lacked punch," admitted Schalke coach Domenico Tedesco.

"If you only score penalties in the last three games, then things will be difficult."

Tedesco -- who already had forwards Mark Uth, Franco di Santo and Breel Embolo sidelined by injury -- then saw Guido Burgstaller limp off, leaving him without a striker and forcing him to play midfielder Weston McKennie and left-back Hamza Mendyl up front.

"We went off the boil in the second half, because they played some weird football," said Reus, referring to Schalke's reshuffling due to injury, "but we showed the right mentality in the end -- it was fun."