Tkachuk's centering pass went off the skate of Chicago defenseman Seth Jones and over the shoulder of goalie Marc-Andre Fleury to give Calgary a 3-2 lead. Trevor Lewis and Johnny Gaudreau each added an empty-net goal for the Flames (12-3-5), who sit alone atop the Western Conference.
"People don't realize how big those goals are when we have a chance to put a team away," Tkachuk said.
Dillon Dube and Milan Lucic also scored for Calgary, which has earned at least one point in seven consecutive games. Jacob Markstrom made 19 saves.
Reese Johnson had a goal and an assist - his first two NHL points - to lead the offense for Chicago (6-11-2). Brandon Hagel also scored.
"It's obviously nice to contribute," Johnson said. "I want to be able to do that more, get some greasy ones in front of the net, but obviously we want to come out of that with two points."
Coming off a 40-save shutout Sunday against Vancouver, Fleury had a tough start to the night, getting beaten twice on the first six shots he faced before slamming the door until late in the third. He finished with 34 stops and fell to 5-8-0.
"When he starts seeing pucks and we start giving up too many chances, he gets better and better," said Chicago captain Jonathan Toews. "He backs us up when we're not so good in front of him. We don't want to have to rely on him to do that every single night. We have to help him and do things better in front of him."
Having won five of six entering Tuesday's game, Chicago finished its road trip 2-2.
"The consistency of playing a certain way is not there yet, but it's getting there," interim coach Derek King said. "I know these guys, going in there after the game they were disappointed. As the season has gone so far, that's a positive that they are upset about it."
Both Blackhawks goals were the result of costly turnovers.
After the Flames grabbed the lead just 1:19 into the game, Hagel tied it at 8:57 when Tyler Pitlick coughed up the puck along the sideboards and Hagel whipped a quick shot into the top corner.
Lucic's goal at 13:06 gave Calgary a 2-1 lead after the first period, but Chicago tied it 3:51 into the second on another freebie.
From behind the net, Markstrom's pass attempt to Elias Lindholm went off the heel of Lindholm's stick and was promptly fired into an open net by Johnson.
After that miscue, Markstrom made a string of saves to keep the game tied.
First, he squeezed a dangerous shot from Patrick Kane from 20 feet out as he broke in off right wing.
On his next shift, Kane got a breakaway, only to see Markstrom turn him aside again, getting a blocker on a shot that also ticked off the post.
Later in the period, Markstrom jabbed out his pad to make a skate save on Kirby Dach. Right after that, he acrobatically got across the crease to rob Hagel after he was set up on a 2-on-1.
Dube opened the scoring on Calgary's first shot when he fired a wrister off left wing just over the pad of Fleury.
After a hectic stretch of nine games in 15 days - including a seven-game Eastern road trip - Calgary has three days to recharge before facing Winnipeg.
"Probably the toughest stretch of our schedule," Lucic said. "Starting in Calgary, ending in Calgary, so it just felt like one big, long road trip. But I think we did a good job of managing our energy, managing our rest, being fresh in all nine games."
It was Calgary's first win against a Western Conference opponent (1-2-3). ... Johnson's goal was the first that the Flames' top line of Lindholm, Gaudreau and Tkachuk have allowed at 5-on-5 all season. ... Calgary improved to 12-1-3 when scoring first while the Blackhawks dropped to 0-9-1 when falling behind 1-0. ... Toews has yet to score in 19 games. Having sat out last season, his last goal was on March 5, 2020.
Blackhawks: Host the St. Louis Blues on Friday.
Flames: Host the Winnipeg Jets on Saturday night.
Flames score 3 unanswered in the third period to blow past Blackhawks
Calgary break the 2-2 draw by scoring three unanswered goals in the final period to beat Chicago 5-2.