Lucien Favre's side looked set to keep their bid for glory on track when Jadon Sancho brilliantly created Mario Gotze's early goal but Daniel Caligiuri converted an 18th-minute penalty.
Salif Sane gave Schalke the lead before the half hour and Caligiuri scored a magnificent free-kick in between red cards for Marco Reus and Marius Wolf as Dortmund imploded at a remarkable rate.
Axel Witsel pulled one back five minutes from time but Breel Embolo lashed another fine finish into the bottom corner, sparking more delirious celebrations from the travelling Schalke contingent.
Bayern will go four points clear at the summit with three games to play if they beat struggling Nurnberg on Sunday.
Sancho's wonderful chip caught out the Schalke backline and Gotze darted into the box to head a 14th-minute opener.
14 - Jadon Sancho has assisted 14 Bundesliga goals this season, the most by an English player in one of Europe's big five leagues since Frank Lampard also assisted 14 in the Premier League in 2009-10. Superstar. pic.twitter.com/mEX9M6cysm— OptaJoe (@OptaJoe) April 27, 2019
Dortmund's lead was short-lived, however, after Julian Weigl was harshly penalised for handball in the penalty area after a VAR review.
Veteran Schalke coach Huub Stevens looked perplexed on the touchline but celebrated heartily when Caligiuri coolly sent Roman Burki the wrong way.
Schalke led a Bundesliga match for the first time since March 31 in the 28th minute when Sane powered home Caligiuri's right-wing corner.
A scrappy start to the second half suited Schalke, and Dortmund boss Favre ended Thomas Delaney's ragged showing in midfield and sent on striker Paco Alcacer – although his team's afternoon would soon disintegrate.
Reus received his marching orders for hacking down Suat Serdar, when a yellow card seemed sufficient, and Caligiuri sent a stunning 25-yard effort whistling into the top corner.
Even considering Dortmund's evidently low opinion of referee Felix Zwayer, Wolf will not reflect upon his 65th-minute recreation of Reus' challenge on Serdar as a particularly bright moment.
An improbably unmarked Witsel reduced the arrears with a back-post volley before Embolo completed a chastening outing for Dortmund, who must now hope for an unlikely Nurnberg victory – the only result that can maintain Schalke's slim mathematical fears of automatic relegation to 2. Bundesliga.