Hoffman had a goal and two assists for the Panthers (19-13-5), who have won four of five. Jonathan Huberdeau had an assist to extend his point streak to five games, and Chris Driedger made 35 saves.
"I thought we started off pretty good and then kind of let our foot off the gas a little bit," Hoffman said. "Too many mistakes that caused goals. There was going to be a little adversity in the game, especially coming off a four-day break. I like the way we battled back and were able to slowly chip away."
WATCH: [All Red Wings vs. Panthers highlights]
Frans Nielsen scored his first goal of the season for the Red Wings (9-27-3), who have lost five straight and are 2-15-0 in their past 17 games. Jimmy Howard made 25 saves.
"I'm super happy with our effort," Detroit coach Jeff Blashill said. "I thought we played our [butts] off. I thought we played tough and competitive. We played hard and didn't melt when we got down. We talked about not melting in those situations, and we didn't. It's as good as we've played in a long time. We played fast and skilled, but we gave up too many easy chances."
Hoffman tied it 3-3 at 6:39, and Toninato scored at 6:48 after Detroit forward Valtteri Filppula mishandled a pass in front of his net for a 4-3 lead.
"That was definitely a big momentum swing for us getting those goals so quick and getting some energy off it," Panthers defenseman Anton Stralman said. "We played a little bit better after those goals, but overall our game needs to be better."