England midfielder Jadon Sancho shows his frustration. (Photo: AFP/Patrik STOLLARZ) |
Dortmund could have gone 10 points clear of Bayern Munich, who host Schalke later on Saturday, with victory.
Sancho opened the scoring, set up two goals and hit the post as the hosts dazzled over 70 minutes at Signal Iduna Park.
However, with the leaders cruising at 3-0 up thanks to goals by Sancho, Mario Goetze and Raphael Guerreiro, Hoffenheim came off the ropes with Algeria forward Ishak Belfodil netting twice.
Despite the draw, Dortmund are eight points clear at the top of the table.
The result will give Mauricio Pochettino food for thought before his Tottenham team host Dortmund on Wednesday at Wembley in the Champions League, last 16, first leg.
In the absence of top-scorer and playmaker Marco Reus, sidelined with a thigh injury, Sancho stepped up with one of his best performances since joining Dortmund from Manchester City in August 2017.
The 18-year-old looked to have scored a fortuitous opener when the ball bounced off him and into Hoffenheim's net with 11 minutes gone, but the video assistant referee spotted the ball had hit his upper arm.
Undeterred, Sancho scored on 32 minutes, taking a return pass from Lukasz Piszczek and fired home from a tight angle.
He helped double Dortmund's lead two minutes before the break when Axel Witsel found him with a long-range pass and although Sancho's shot was parried, Goetze tapped in the rebound.
The pair combined for Dortmund's third, Goetze sprinting after Sancho's audacious backheel to square for Guerreiro to make it 3-0 on 67 minutes.
However, just after Sancho then hit the post, Hoffenheim fought back, Belfodil tapped home his first goal from a cross by Pavel Kaderabek.
The Czech midfielder made it 2-0 with a bullet header eight minutes from time.
Belfodil completed the comeback and claimed a point for Hoffenheim when he launched himself at a free-kick and his header beat goalkeper Roman Burki on 87 minutes.
Elsewhere, Borussia Moenchengladbach slipped to third after losing 3-0 at home by Hertha Berlin as Salomon Kalou, playmaker Ondrej Duda and Davie Selke scored.
In the basement battle, Hanover climbed off the bottom with a 2-0 home win at Nuremberg, who took their place as last in the table, with former Germany striker Nicolai Mueller scoring both goals.
Fourth-placed RB Leipzig were held to a goalless draw at home by Eintracht Frankfurt, who are just one place behind them.
Mid-table sides Freiburg and Wolfsburg shared a point in an entertaining 3-3 draw as Gian-Luca Waldschmidt equalised for hosts Freiburg two minutes from time as his side came back from 2-1 down.
What the stars mean:
★ Poor ★ ★ Promising ★★★ Good ★★★★ Very good ★★★★★ Exceptional