Bobby Ryan and Valtteri Filppula scored, and Robby Fabbri had two assists for the Red Wings (4-12-3), who have two wins in their past 15 games. Thomas Greiss allowed four goals on 13 shots before being replaced to start the second period by Jonathan Bernier, who made 23 saves.
"We were terrible," Detroit coach Jeff Blashill said.
Detroit (0-for-4) did not score a power-play goal for the 11th straight game, its longest streak since the first 11 games of the 1950-51 season.
"This just isn't acceptable," Red Wings center Frans Nielsen said. "I thought we were starting to figure out what it takes to win, but we were losing 1-on-1 battles all over the ice."
The teams play again here Saturday (5 p.m. ET; FS-D, FS-F, NHL.TV).
Juho Lammikko gave Florida a 1-0 lead at 6:09 of the first period, scoring from the top of the slot. It was his second goal in two games after he didn't score in his first 47 NHL games.
Weegar made it 2-0 at 7:58, scoring off a pass from Huberdeau. Hornqvist extended the lead to 3-0 at 12:45, tapping in Yandle's pass at the right post.
Ryan pulled Detroit within 3-1 at 14:06 with his first goal in 15 games. Barkov pushed in a rebound 1:09 later to make it 4-1 at 15:15.
"This was a good night," Panthers coach Joel Quenneville said after Florida scored a season high in goals. "We want to keep building off this, because the better we are playing, the more fun it is."