Hannover's new signing Felipe gave the home side the lead against the run of play just before half time, but Klaas-Jan Huntelaar and Lewis Holtby turned things around with two goals in 12 minutes.
But Adrian Nikci sprang from the bench to grab an equaliser 10 minutes from time to earn Hannover a point.
After a tight opening 30 minutes, the game came to life before the break, prompted by Schalke forward Holtby.
His was the first shot on goal in the 39th minute, but Hannover goalkeeper Ron-Robert Zieler was equal to it and pushed the ball away to safety.
Hannover took the lead with their first big chance four minutes later.
New signing Felipe was left unmarked at the far post, and if Schalke did not know how strong he is in the air beforehand, they will do now as he put the Reds ahead.
Hannover almost went in at the break with a two-goal lead when Jan Schlaudraff powered his way to the goal line, his cross was pushed out by Timo Hildebrand to Leon Andreasen who headed just wide.
A 29-goal haul last season should have been enough for Hannover to take Huntelaar seriously but in the 52nd minute they left him too much room on the edge of the penalty area and were duly punished.
The Dutchman opened his account for the season with a low left-footed shot beyond the reach of Zieler and into the bottom corner.
Schalke wasted a good chance to go in front in the 59th minute when Julian Draxler drew Zieler towards him before pulling the ball back for Huntelaar, who laid it off for Holtby, but his shot was kicked off the line by Zieler.
It was a warning which Hannover did not heed as Holtby headed Schalke in front in the 64th minute, rising highest on the edge of the six-yard box to beat Zieler in style.
It was Hannover's turn to chase the game and Schlaudraff led their revival.
Once again he got to the goal line to set up substitute Nikci, who scored from six yards with his first touch of the game in the 80th minute to earn the home side a point.