Sane continued his bright start to the match when he threaded a through-ball into the path of Max Meyer in the box, but the forward failed to hit the target with his left-footed strike.
The home side came within inches of the lead after Sascha Riether sent a pinpoint cross into the box for Klaas-Jan Huntelaar, who got between two defenders to poke an effort at goal only to see his strike miss the target.
In the second half, Schalke were presented with a glorious chance to go ahead when Huntelaar was brought down in the box by Marcelo and a penalty was awarded.
Geis took the spot kick and buried his effort beyond the reach of Ron-Robert Zieler to put Schalke into the lead.
The home side extended their advantage through Huntelaar as he converted Meyer's cross from the left from close range after peeling off his marker at the back post.
Meyer had the opportunity to put the game beyond the reach of Hannover when he raided into the box, but his low strike was well saved by Zieler.
Hannover got back into the game when Allan Saint-Maximin was on hand to smash the rebound into the net after Kenan Karaman's strike had clattered off the post.
However, Franco Di Santo secured the win for Schalke as he pounced on a loose ball in the area to direct his effort past Zieler to end Hannover's comeback.
The result lifts Schalke from eighth place into fourth, while Hannover remain in 14th.