Carlson had two assists, and Ville Husso made 23 saves for the Ducks (41-27-4), who are 5-0-1 in their past six games.
Anaheim is five points ahead of the Edmonton Oilers for first place in the Pacific Division.
“I thought it was one of those games where pucks were bouncing all over the place,” Anaheim coach Joel Quenneville said. “When they went ahead, I thought this is one of those nights that we’ve been so fortunate (with) lately, that our luck is going to run out one of these days.”
Blake Coleman and Matvei Gridin scored, Olli Maatta had two assists, and Cooley made 30 saves for the Flames (30-34-8), who are 4-0-1 on a six-game homestand.
“That one stings,” Cooley said. “Like, just a couple seconds left, and off a stick and over the shoulder. I saw it all the way and I was like, ‘I’ve got it,’ and boom, last second, over the shoulder. So that stings a lot, but overall, I thought our team played really, really well.”
The Flames had a great chance to score in the game’s opening minute when Morgan Frost, Gridin and Matt Coronato broke into the Ducks’ zone on a 3-on-0, but they didn’t manage to get a shot on goal.
“I think there was certain times tonight, for sure, that we overpassed the puck, and we’re a team that has to put pucks to the net and then find a way to generate off a rebound,” Flames coach Ryan Huska said. “Hey, you’re all for creativity and skill, but at some point someone’s got to shoot it in the net. You can’t pass it in there.”
Yegor Sharangovich appeared to put Calgary up 1-0 with a wrist shot from the left circle at 3:06, but the call was reversed following a successful coach's challenge for offside.
Coleman did give Calgary a 1-0 lead at 1:06 of the second period when he skated into the slot and redirected a pass from Joel Farabee just inside the far post past Husso’s outstretched left leg.
Granlund tied it 1-1 at 3:07. He picked up a loose puck in the neutral zone and skated to the high slot before snapping a shot over Cooley’s right shoulder.
“I thought we did a great job bouncing back. Obviously, another slow start that we shouldn’t be doing,” Ducks defenseman Jackson LaCombe said. “Obviously, ‘Granny’ played great and ‘Hus’ did too, and we did a great job battling back at the end.”
Gridin put the Flames ahead 2-1 at 7:46 of the third period. Pavel Mintyukov took a shot to the upper body and went down, but play continued and Gridin got a cross-ice pass from Maatta and put a wrist shot past Husso from the left dot.
"Like, not a great feeling type of goal, but that’s good I (scored)," said Gridin, who extended his point streak to four games (one goal, three assists). "Great sequence by us in the O-zone."
Granlund scored a power-play goal to draw the Ducks even at 2-2 at 16:27. Leo Carlsson tipped a Carlson point shot on net, and the rebound bounced into the left circle to Granlund, who scored his second of the game with a snap shot.
“Again, we magically tied it late and we scored late, late in overtime,” Quenneville said. “We’ll take it, but I still think it would be nice to clean some things up.”