Dortmund took an early lead through Mario Gotze but their afternoon and Bundesliga title hopes unravelled thereafter, with Daniel Caligiuri equalising from the penalty spot and Salif Sane giving the visitors a half-time lead at Signal Iduna Park.
The task looked even more arduous after Reus received his marching orders for a lunge on Suat Serdar. Then Dortmund’s hopes were compounded further as Caligiuri scored spectacularly from the resulting free-kick.
Marius Wolf foolishly replicated Reus' tackle on Serdar and was sent off five minutes later as Dortmund's composure deserted them.
Breel Embolo completed a famous win for Schalke after Axel Witsel briefly reduced the arrears for the nine men.
Reus led extended protests against referee Felix Zwayer after his dismissal but, on reflection, he felt he could have no complaints.
"It was a clear red card. I was late," he told Sport1.
"Anyone who knows me knows that I did not want to hurt him. I am sorry to the team.
Full time. pic.twitter.com/JnQwQpBOlc— Borussia Dortmund (@BlackYellow) April 27, 2019
Reus’ dismissal was just the second red card he has received in his career, and first since 2007/08 campaign.
His red card also means the German international will be suspended for the upcoming Bundesliga games against Werder Bremen and Fortuna Dusseldorf, before Dortmund finish the campaign against Borussia Monchengladbach.
While it was a disappointing afternoon for Reus, the 29-year-old has enjoyed a superb season for BVB and has netted 20 goals in 35 appearances in all competitions.
Following the defeat to Schalke, head coach Lucien Favre declared his team's title hopes to be over.
Bayern Munich are now heavy favourites to retain their crown and travel to Nurnberg on Sunday now knowing they could move four points clear of Dortmund in the title race, with just three games remaining.
Should they finish top of the pile again, it will be the Bavarians seventh consecutive title, since Dortmund claimed the German crown in 2012.
They could also compete the double when Niko Kovac’s men face RB Leipzig in the DFB Pokal final.