In a breath-taking final 15 minutes, the lead changed hands three times.
"It's worth being a coach for such an amazing game," beamed Stuttgart coach Bruno Labbadia as his team went fifth.
"It is nice when your team doesn't give up when they are up against the German champions."
After Stuttgart scored three goals without reply to take a second-half lead, Dortmund went back ahead in the 87th minute when Croatia midfielder Ivan Perisic scored, less than three minutes after coming off the bench.
But Gentner broke Dortmund hearts with his team's fourth goal deep into added time.
"We should never have allowed the game to slip away after taking a 2-0 lead," fumed Dortmund goal-scorer Mats Hummels.
"To concede the equaliser in the last few seconds was a bitter way to finish the game."
Despite the frenzied finish, defending champions Dortmund still extended their unbeaten run to 22 games.
"That was a crazy match when the lead changes hands so many times, I have never seen anything like it," said Dortmund coach Jurgen Klopp.
"We let it slip out of our hands after we took a 2-0 lead. Stuttgart put us under pressure and deserved the draw, I am just happy we managed to get a point."
Second-placed Bayern Munich can halve Dortmund's six-point lead when they play Nuremberg on Saturday with the two teams on a collision course to meet at Dortmund's Signal Iduna Park on April 11 in the match which could well decide the league.
There was no sign of the drama to come when Dortmund's Japanese star Shinji Kagawa gave his side the lead with his fourth goal in three league games with an opportunist strike on 33 minutes.
Poland captain Jakub Blaszczykowski extended Dortmund's lead when he converted a long-range pass from defender Mats Hummels on 49 minutes.
The game burst into life when Stuttgart hit back with three goals in eight minutes.
Bosnia striker Vedad Ibisevic gave the guests hope with his strike in the 71st minute.
Stuttgart's Julian Schieber then turned the game on its head when he beat Dortmund goalkeeper Roman Weidenfeller on 77 minutes and then produced a superb individual goal 99 seconds later as Stuttgart went ahead.
Dortmund got back on level terms when Hummels beat Stuttgart goalkeeper Sven Ulreich at the near post on 82 minutes.
Perisic then put Dortmund ahead five minutes later before Gentner's dramatic strike shared the points.
What the stars mean:
★ Poor ★ ★ Promising ★★★ Good ★★★★ Very good ★★★★★ Exceptional