It was not until Lewis Holtby, who is joining Tottenham Hotspur at the end of the season, restored a two-goal cushion two minutes from time that Schalke wrapped up the three points.
The Champions League side started strongly with Marco Hoeger and Julian Draxler missing good chances in the opening minutes.
Schalke, without suspended forward Klaas-Jan Huntelaar and midfielder Jermaine Jones, looked to be running out of ideas before Jefferson Farfan scored after a Christian Fuchs long throw was headed into the Peruvian's path in the 44th minute.
Teenager Draxler drilled in a second goal for the hosts five minutes after the restart.
Hanover launched a comeback when Sergio Pinto's 18-metre shot took a wicked deflection off Schalke's Roman Neustaedter in the 55th and Hungarian Szabolcs Huszti silenced the home crowd with a low left-foot drive four minutes later.
The revival did not last long, however, with Hoeger firing Schalke back in front after 64 minutes and Ciprian Marica curling a shot past keeper Ron-Robert Zieler in the 67th.
Hanover struck back instantly with Huszti volleying in his second goal a minute later before midfielder Holtby tapped home to settle Schalke's nerves in the 88th.
Hanover striker Mame Diouf's spectacular bicycle kick on the final whistlewas the goal of the game but came too late.
Schalke, who now have 28 points, were desperate for a winning start, having picked up just two points from their last six games before the winter break.
The victory is also some relief for coach Jens Keller, who took over from Huub Stevens in mid-December.
Leaders Bayern, who had a big coup this week with the news that former Barcelona coach Pep Guardiola was joining for next season, host bottom side Greuther Fuerth on Saturday.
Bayern, on 42, have a nine-point lead over Bayer Leverkusen, who host Eintracht Frankfurt, and are 12 points clear of third-placed champions Borussia Dortmund who visit Werder Bremen.