Jefferson Farfan and Max Meyer scored before the break to earn the Royal Blues all three points and give them a four-point advantage over Borussia Monchengladbach in the race for fourth.
Hannover remain in mid-table after their first defeat under new coach Tayfun Korkut.
Schalke built on the confidence they had gained from back-to-back wins, putting their guests onto the back foot immediately with Ron-Robert Zieler kept busy denying a Klaas-Jan Huntelaar shot and a succession of dangerous crosses.
Hannover showed no signs of wanting to break out of their own half, inviting Schalke to attack them, perhaps hoping to tire their hosts out before striking later.
It was a dangerous tactic and one which was punished in the 39th minute, just when the hosts were starting to get frustrated and Hannover were slowly starting to get more involved in the game.
Sead Kolasinac used his pace to get past Marcelo before sending in a low cross for Farfan, who was given an easy finish from close range to put Schalke in front.
Before the half ended, Meyer made it two.
Atsuto Uchida provided the ball for the 19-year-old, who benefitted from a dummy by Huntelaar to score his fifth goal of the season.
Mame Diouf had a rare chance to reopen the match 10 minutes into the second half, but he tried instead to tee up strike partner Artjoms Rudnev sand the chance was wasted.
Hannover were much more attack-minded in the second half, chasing the game with the confidence one might have expected to see from the very beginning.
The game was more open and at the same time even with Meyer forcing a fine save out of Zieler with 15 minutes to go.
Lars Stindl saw a late free-kick saved by Ralf Fahrmann as the last moment of danger passed without the visitors managing even a consolation goal as they lost for the first time in 2014, and the first time under Korkut.