Julian Nagelsmann's side had looked to be on their way to a second Group F defeat after Memphis Depay had coolly slotted home after 67 minutes, but substitute Joelinton had other ideas, tapping into an empty net right at the death of a pulsating game.
Bertrand Traore had put the French side ahead after 26 minutes before two goals from Andrej Kramaric had Hoffenheim on course for their first ever Champions League win.
Tanguy Ndombele and Depay then struck for the visitors against the run of play, but Joelinton's dramatic late intervention secured a deserved point for his side.
Kevin Vogt's moment of madness gifted the visitors a 26th-minute lead as he made a mess of returning Oliver Baumann's short goal-kick, allowing Traore to nip in, nudge the ball away from the advancing Hoffenheim keeper and slot into an empty net.
The home side responded well to that setback, though, and were level just six minutes later when Kramaric controlled Pavel Kaderabek's header on his chest at the back post and fired past Anthony Lopes from close range.
Hoffenheim picked up where they left off after the restart, Kramaric again taking down a cross on his chest and clipping a half volley past Lopes from 10 yards for his second of the contest in the 47th minute.
Despite the Bundesliga team’s dominance, Lyon pulled level after 59 minutes when Ndombele latched onto Traore's incisive through ball and unleashed a fizzing effort from an acute angle that Baumann could only deflect into the roof of his own net.
Depay then thought he had secured all three points for his side eight minutes later, steering past Baumann with his left foot after latching onto a long ball.
Hoffenheim's hopes looked to have ended when Vogt inexplicably headed wide from six yards out late on, only for Joelinton to convert Nico Schulz's low cross in the second additional minute.
What it means: Lyon lose ground on City
Manchester City's routine win over Shakhtar Donetsk means they now top Group F, with Lyon a point back in second. Hoffenheim have given themselves a fighting chance of making the knockout stages and know that a win in the reverse fixture in France next month will pull them level with Bruno Genesio's side on five points.
Depay delivers on the big stage
Netherlands international Depay has divided opinion during his career, but a first Champions League goal in three years demonstrated his importance to Lyon. His composed finish looked to have delivered a precious away win for his side until they let slip their advantage in the closing stages.
Vogt of no confidence
The Hoffenheim captain's decision to return Baumann's pass ended disastrously. Traore took full advantage of the panic-stricken defender's weak effort, scoring a gift-wrapped opener for the French side.
Key Opta Facts:
- Hoffenheim have become the fourth German side in Champions League history to fail to win their opening three matches (D1 L2), after Hamburg in 2000-01, FC Schalke in 2001-02 and Borussia Monchengladbach in 2015-16.
- Lyon are unbeaten in their last six matches in the Champions League (W2, D4), their longest such run in the competition since February 2007.
- Lyon have now won just one of their last seven Champions League matches against German opposition, drawing two and losing the other four.
- Bertrand Traore is just the fourth player from Burkina Faso to score a Champions League goal, after Bakary Kone, Yssouf Kone and Ousmane Sanou.
- Lyon have had seven different scorers in this season's Champions League (Maxwel Cornet, Nabil Fekir, Tanguy Ndombele, Leo Dubois, Moussa Dembele and Memphis Depay). Excluding own goals, this is more than any other side in the competition so far.