Frankfurt ruin Dortmund record attempt
Dortmund, who had won 14 of their 16 previous games and lost just one, needed only a point in their final game before the winter break to equal Bayern Munich's record of 44 points from 17 games in the 2005/06 season but with a better goal difference.
They were denied it when Gekas completed a swift attack with a classy left-foot finish in the 87th minute - a 14th goal of the season for the Bundesliga's top scorer.
Dortmund's first defeat on the road this season - after winning a record eight out of eight away games - left them top with 43 points from 17 matches.
They have already set the record for the biggest lead ever going into the winter break.
Surprise package Mainz finished the day in second, 10 points behind, after beating St Pauli 4-2 with Andre Schuerrle scoring twice in the first half.
Seconds before the Gekas goal, Dortmund striker Lucas Barrios had fired high over the bar from close range to squander the visitors' best chance.
"There was no team that deserved to win it," Dortmund coach Jurgen Klopp said. "We missed the huge chance a minute earlier with Lucas and if he had scored we would have won it. But we should not lose our optimism. Luck was just not our side today."
Schalke 04 won their third game in a row when they beat Cologne 3-0 courtesy of a Raul hat-trick to move up to 10th place while VfL Wolfsburg needed a stoppage-time goal to snatch a draw 2-2 with Hoffenheim after going 2-0 down.
Werder Bremen's disappointing season continued with a 2-1 defeat against visitors Kaiserslautern with both teams finishing with 10 players.
Hanover 96, on 31, suffered a surprise 3-1 defeat at Nuremberg, snapping their five-game winning streak.