Nazem Kadri scored twice, and Mikael Backlund and Connor Zary each had a goal and an assist for the Flames (24-27-6), who have won three of their past four games.
Tyler Toffoli scored the lone goal for the Sharks (27-25-4), who have lost five straight (0-4-1). Yaroslav Askarov made 25 saves.
It was the first game for each team following the break for the Olympics.
Toffoli put the Sharks up 1-0 at 1:17 of the second period, tipping Mario Ferraro’s point pass over Wolf’s glove from the slot.
Kadri tied it 1-1 at 15:02, burying a wrist shot from the slot over Askarov’s glove off a saucer pass from Joel Farabee.
Zary gave Calgary a 2-1 lead at 5:22 of the third period when he collected a pass from Backlund and beat Askarov with a wrist shot to the blocker side from the top of the left face-off circle.
Kadri scored his second goal at 11:56 to make it 3-1. San Jose defenseman Timothy Liljegren’s clearing attempt deflected off Zary in the right face-off circle to Kadri, who waited out Askarov as he cut toward the net before lifting a wrist shot over Askarov’s right pad .
Backlund added an empty-net goal at 17:30 to secure the 4-1 final.