Tkachuk doubled the lead less than two minutes later. Deryk Engelland, in his 400th career NHL game, gained the zone before dropping a pass to Tkachuk, who snapped a shot between Jones' legs to give the Flames a 2-0 lead at 18:05.
"I'm really happy for him," Frolik said. "When you're young like that it's not easy. I try to talk to him on the bench before the game…two big goals from him. I'm really happy for him. He's a great player and hopefully he can keep this thing going."
The pair of goals came on the heels of a couple of key saves from Johnson.
Johnson denied Burns' sharp-angled shot and a rebound attempt from Mikkel Boedker at 8:43, and made a save on Chris Tierny's backhand from nine feet at 14:27.
Burns pulled San Jose within one 35 seconds into the third period, one-timing a shot on the power play by the right pad of Johnson to trim Calgary's lead to 2-1.
Karlsson deflected Marc-Edouard Vlasic's shot from the point, and gathered the rebound to the left of the crease before tucking the puck behind Johnson's right pad to tie the game 2-2 at 9:18.
NOTES: The Flames out-hit the Sharks 32-24, and Lance Bouma had a game-high six hits. Calgary also blocked 21 shots, including six from captain Mark Giordano and four from centre Matt Stajan. Forward Kris Versteeg left the game after the first period and did not return. Defencemen Nicklas Grossmann and Dennis Wideman, and forward Freddie Hamilton were scratched. Defenceman Brett Kulak dressed for the first time since Oct. 20 against the Carolina Hurricanes. Deryk Engelland played in his 400th career NHL game tonight.
UP NEXT: The Flames will visit the Los Angeles Kings at Staples Center on Saturday (8:00 PM MT; CBC, SN1, SN960).