Klaas Jan Huntelaar put the Royal Blues in front in the 11th minute, but Stefan Aigner responded within two minutes to earn Armin Veh's side a point.
Schalke did all of the attacking in the second half, but not even with an extra man following Karim Matmour's red card in the 87th minute could Huub Stevens' side find a winner.
The draw saw Schalke drop to third, a point behind Borussia Dortmund and 10 adrift of Bayern.
Schalke looked for Huntelaar from the off and, after failing to find him twice inside the opening 10 minutes, Lewis Holtby picked him out for the opening goal a minute later.
His fine pass was the perfect invitation for the Dutchman, alone with only Kevin Trapp to beat, and he accepted it, slotting his left-footed shot past the Frankfurt goalkeeper.
Schalke's lead did not last long before Aigner levelled for the battling visitors.
Bastian Oczipka sent in the cross for Aigner to head in unstoppably past Lars Unnerstall.
Frankfurt boldly attacked their hosts, whose defence frequently looked shaky.
Aigner almost punished them for a second time in the 42nd minute, but he did not meet Takashi Inui's cross as he anticipated at the far post and the ball went wide.
Schalke's plan to resolve their defensive problems was to attack more in the second half and Jefferson Farfan sent in a warning shot within 60 seconds of the restart.
Jermaine Jones tested Trapp before Huntelaar's header hit the crossbar with the Royal Blues raising their game.
Huntelaar did everything right except provide the finish following some excellent individual skill in the 75th minute as Frankfurt got everybody behind the ball for the final 15 minutes of the game.
Matmour was given his marching orders for a second yellow card, but Frankfurt were still able to hold firm to justify their own place in the top four.