Zach Sanford had a goal and an assist for the Blues (31-12-8), who were 0-2-1 in their previous three games, including a 3-1 loss at the Vancouver Canucks on Monday. Jordan Binnington made 27 saves.
"I'm just happy we find a way to win games," Perron said. "Hopefully, we're winning each of our games from now on, but maybe that gets it started and we don't even talk about how we won this one. It's two points."
WATCH: [All Blues vs. Flames highlights]
Sean Monahan scored two goals, and Johnny Gaudreau had two assists for the Flames (26-19-6), who have lost three of their past four games (1-2-1) after winning five straight. Cam Talbot made 30 saves in Calgary's first game since Jan. 18.
"That's a tough team to play the first game back, but I thought we did some good things," Gaudreau said. "There's still, obviously, room for improvement, but I thought it was a good effort."
After Perron scored in the first round of the shootout, Ryan O'Reilly beat Talbot five-hole in the bottom of the second to end the game. Monahan missed in the first round, and Binnington made the save against Matthew Tkachuk in the second.
"I don't know what I'm doing before this one," Perron said. "Sometimes, I have a move in my head. I kind of had a feeling I would have to shoot that one the way the ice was. For me, I didn't feel comfortable making too much of a move. It went in. It's good."