Julian Draxler opened the scoring for the hosts in the 12th minute of a frantic tie, before Klaas-Jan Huntelaar gave them some breathing room with a close-range header. Robert Lewandowski's then strike sparked a second-half fightback from Dortmund, but the visitors were unable to snatch a draw despite numerous chances to do so.
Dortmund may have progressed to the quarter-finals of the UEFA Champions League earlier in the week, but the only thing that mattered to players and fans subsequently was the 142nd Revierderby against their ancient foes. Right from the off the match lived up to its billing as the fiercest fixture on Germany's footballing calendar with first few tackles setting the scene for a feisty encounter.
Chances were not long in coming either, with Mario Götze and Jakub Blaszczykowski both dragging shots wide in the early stages. Yet it was the hosts who had the upper hand for most of the first half, even without midfield enforcer Jermaine Jones, who was missing through suspension.
Schalke took the lead through Draxler, who marked his 100th competitive outing for the club with a finely-taken goal from Atsuto Uchida's cross. The opener gave the hosts further courage to attack and they would have doubled their lead sooner had Götze not cleared a Joel Matip effort off the line. Dortmund continued to probe, but slack defending allowed Huntelaar a free header and the Dutchman made no mistake to hand the Royal Blues a deserved two goal cushion at the break.
With his hand forced, Jürgen Klopp brought on Marco Reus and Nuri Sahin for the second period in the hope of rejuvenating the Dortmund attack. The move gave the guests greater impetus and once the duo had acclimatised to the game's pace, their passing and movement caused Schalke real problems. By the time Huntelaar was forced off due to injury, the tide had very much turned in Dortmund's favour and they teed up a thrilling final half-hour when Lewandowski finished tidily from Blaszczykowski's threaded pass.
Dortmund sensed blood and pushed for an equaliser, but it was Schalke who had the next sight of goal. Draxler intercepted a slack pass from Neven Subotic and scampered to the edge of the box before feeding Teemu Pukki. However, with just Roman Weidenfeller to beat, the Finn fluffed his lines and the chance went begging.
Pukki had another opportunity to put the result beyond doubt shortly before the end, but he was unable to guide his flick from Jefferson Farfan's right-wing cross into the net. It was of little consequence by then, however, as Schalke hung on to complete a Revierderby double over Dortmund for the first time since the 2009/10 campaign.
Line-ups and statistics