Brad Marchand, Evan Rodrigues, and Sam Bennett scored for the Panthers (12-11-1), who have lost three of four. Sam Reinhart had two assists.
Daniil Tarasov made 29 saves for Florida, which has lost consecutive games for the first time since Oct. 16 and 18.
"When you score two (quick goals) like that, I think you think you're just going to generate all you want," Panthers coach Paul Maurice said. "When that doesn't happen, some frustration comes into your game. We didn't move the puck very easily but the expectation that we should is not realistic."
Florida took a 1-0 lead 54 seconds into the game after Calgary forward Jonathan Huberdeau turned the puck over in his own zone. Reinhart intercepted it and got it to Rodrigues, who scored on the rush.
Bennett made it 2-0 at 2:58 of the first with the Panthers' second shot of the game. The Flames scored the next four goals to take a 4-2 lead.
Kuznetsov, playing his 13th NHL game, made it 2-1 at 5:35, sending a point shot through the legs of defenseman Seth Jones that went past Tarasov.
Weegar tied it 2-2 at 10:41 on a point shot from outside the right circle.
"I thought our game got better," Calgary coach Ryan Huska said. "When Kuznetsov scored that goal for us, I thought it shifted some of the momentum in our favor. Then we had another great offensive-zone shift and got another goal from a defenseman."
It was the first goal of the season for Weegar, who was drafted by the Panthers and played six seasons with them before being traded to the Flames as part of the Matthew Tkachuk deal in 2022.
"The turning point was definitely [Kuznetsov's] goal. That was big for our team and slowed their momentum down," Weegar said. "… I thought 'Kuzy' did a great job, super happy for him, and proud of him. That's definitely what sparked our comeback."
Calgary took a 3-2 lead 55 seconds into the second period on a two-man advantage when Morgan Frost got to a rebound in front of the net that Tarasov could not handle.
"I can't take a 5-on-3 penalty there, so that obviously changed something," said defenseman Aaron Ekblad, who committed a tripping penalty after A.J. Greer had been called for holding.