Sejad Salihovic was the first to score from 12 yards after half-an-hour, with Klaas Jan Huntelaar earning the Royal Blues a point with a spot-kick 10 minutes from time.
It was a classic game of two halves in Baden-Wurttemberg, with Hoffenheim good value for their half-time lead but Schalke not deserving to return to Gelsenkirchen without something after a strong second-half recovery.
And the point gives Huub Stevens’ side a three-point advantage over Borussia Monchengladbach in the race for third spot and an automatic berth in the Champions League next season.
With this game sandwiched between two Europa League quarter-final ties, it was understandable if Schalke were a little distracted and Hoffenheim used this to their advantage in the first half.
Markus Babbel’s side posed the greater threat, buoyed by their first win under their new coach last weekend.
Roberto Firmino, scorer of the winning goal in that 2-1 success against Borussia Monchengladbach, was the first to truly test Schalke goalkeeper Lars Unnerstall, who was in the starting XI despite only training twice this week, in the 22nd minute.
Hoffenheim took a deserved lead after half-an-hour when Unnerstall fouled Sven Schipplock inside the penalty area and Salihovic dispatched the spot-kick.
Schalke had saved all their energy for the second half, it seemed, as they came out fighting.
Jefferson Farfan almost levelled in the 57th minute, but an instinctive save from Tom Starke kept his shot out at the far post.
From the resulting corner, Jermaine Jones’ header was cleared off the line by Fabian Johnson as Schalke increased the pressure.
They were rewarded in the 80th minute when Chinedu Obasi cut into the penalty area and went to ground rather easily as Andreas Beck reached out his arm to block his path.
The referee awarded the second penalty of the game and Huntelaar, who had struck the crossbar with a header moments earlier, made no mistake from the spot to move level with Bayern Munich’s Mario Gomez at the top of the Bundesliga goalscoring charts on 23.
Schalke kept up the pressure but were unable to find a winner and will now turn their attentions to overturning a 4-2 deficit against Athletic Bilbao in Spain on Thursday.