Szabolcs Huszti opened the scoring from the spot, before Mame Diouf doubled the hosts' advantage just before the interval. Adam Szalai pulled a goal back for the visitors, who ended the encounter with just nine men on the pitch.
The effects of Schalke's sluggish season start were immediately noticeable in their play, with their movements stilted and passing marked by hesitancy and uncertainty. Cruelly, just as the side were beginning to settle down, their afternoon took a sudden turn for the worse. A defensive misunderstanding between centre-backs, Joel Matip and Benedikt Höwedes allowed Mame Diouf to nip in, only for Höwedes to bring the Senegalese striker down when through on goal.
The captain was sent off for the third time in his Bundesliga career and Huszti stepped up to coolly slot the resultant penalty low into Timo Hildebrand's bottom-left corner. Hannover scented blood and kept up the pressure, hounding their visitors high up the pitch and increasing the Royal Blues' sense of uncertainty.
Visibly low on confidence, Schalke were stunned and failed to string together any attacking moves of seriously menacing intent in the face of such an onslaught. Shortly before half time, the hosts got the reward their relentless pressure deserved as Diouf leapt highest at the back post to nod in Huszti's lofted cross from the right for his 17th goal in just 22 home appearances for the 96ers.
Hannover's deadly attacking duo should have put the game to bed within minutes of the restart. Another defensive wobble from Schalke afforded Diouf the room to scamper forward down the right wing, but his ball into the centre was just a touch too far behind Huszti, forcing the Hungarian to break stride, which allowed the guests to recover and clear.
The hosts were left ruing such profligacy shortly afterwards, when Schalke pulled a goal back against the run of play. Roman Neustädter showed superb control to chest the ball down for Szalai, who was well positioned to poke the ball past Ron-Robert Zieler. Szalai had the equaliser on the tip of his boots moments later when Julian Draxler squared to him with just Zieler to beat, but the 25-year-old dinked his effort narrowly wide, much to the exasperation of his team-mates.
With the match drawing to a close, Schalke were given a boost when Huszti, Hannover's best player all afternoon, was sent off, restoring numerical parity on the field if not on the scoreboard. Roused, Schalke summoned their last ounces of strength to search for an equaliser, but when Christain Fuchs was also sent off, Jens Keller's men knew the game was up and return home nursing another disappointing result.
Line-ups and statistics