The Flames are 6-3-1 in their last 10. They moved within three points of Pacific Division-leading Vegas and a point behind second-place Edmonton.
''We've got to be comfortable in these types of games,'' Tkachuk said. ''This is a playoff-type game, four-pointer. This is what it's going to be coming down the stretch. Happy with our effort, especially in the third.''
Cam Talbot made 32 saves to win in his 300th NHL start.
''It felt like a playoff atmosphere,'' Talbot said. ''You can tell that every little play mattered and guys were going to the wall tonight.''
Taylor Hall had a goal and an assist and Carl Soderberg also scored for Arizona.
''We lose games by one,'' Hall said. ''We're right there. We have to find a way to produce something 6-on-5.''
Soderberg pulled Arizona within a goal at 10:57 of the second period. The Swede dove on a loose puck trickling between Talbot's pads and shoveled it over the goal line.
Up 3-2, Calgary held Arizona to just five shots in the third period although the Coyotes' Nick Schmaltz whiffed on a golden chance to tie the game. He got the puck behind Talbot, but missed the open net with just over three minutes left in regulation.
Talbot then lost his helmet in a collision with Coyotes forward Conor Garland while trying to poke check the puck away from him.
''Just a tough bounce off the boards. Of course, it kicks off the net and goes straight onto his stick,'' Talbot said. ''Pure desperation. I feel fine now. The win helps, obviously.''
The Flames are at home Sunday against the Golden Knights, who lost 4-0 to the Winnipeg Jets on Friday.
''Sunday's going to be the biggest one of the year by far,'' Tkachuk said, ''so we're looking forward to it.''
NOTES: Tkachuk has nine points in his last six games. ... Kuemper stopped 31 shots.
Coyotes: At Winnipeg on Monday night.
Flames: Host Vegas on Sunday.