San Jose retook the lead with 18.4 seconds to go in the opening frame, Ty Dellandrea feeding the puck from behind the net to Celebrini, Wolf stopping the puck but it went off the post and sat on the goal-line behind him, Goodrow putting it home.
The Flames went 0-2 on the powerplay in a second period that was fast and physical.
Wolf had handful of big stops, among them a blocker save on William Eklund’s one-timer from the slot, then kicking out a pad to deny Zack Ostaphcuk’s rebound attempt right on the doorstep.
Askarov, meanwhile, stopped Klapka as he cut to the net with a defender on his back, and also on a hard blast later from Yan Kuznetsov.
Calgary had a 17-16 edge in shots after 40 minutes.
The Flames were explosive to start the third, putting seven shots on Askarov in the first two minutes, including two great opportunities by Andersson in the opening 60 seconds.
But Celebrini would take a feed, spin free into open ice fire a shot Wolf got a piece of but went in at 2:46.
Wolf stopped former Flame Tyler Toffoli on a breakaway but Toffoli, though, would score his 300th career goal at 12:53.
Kadri answered back just 37 seconds later the pull the Flames back within two.