Andrew Mangiapane had a goal and an assist, and Jacob Markstrom made 40 saves for the Flames (14-4-5), who are the first NHL team to win 10 games on the road this season (10-2-2).
"I always found, of all the years that I've played, it's always nice to get on the road early, just early on in the season or early on in the schedule, because it allows you to build that team chemistry and build that camaraderie that I'm talking about, and we've been able to do that so far," Flames forward Milan Lucic said. "And we're just having fun playing the right way."
Alexander Edler scored his 100th NHL goal, and first for the Kings (9-9-4), who are 1-4-3 in their past eight games following a seven-game winning streak. Cal Petersen made 29 saves.
"I think it always comes down to little things, the little details in a game, little mistakes here and there," Edler said. "Whether it's getting the puck behind them, turning the puck over here and there. If you do that too many times, eventually you're going to get punched."
Lucic put Calgary ahead 2-1 with a power-play goal at 16:28 of the first period, beating Petersen five-hole with a wrist shot from the left circle. Four of Lucic's six goals this season have been five-hole.
"It just seems to be working, and if it ain't broke, don't fix it," Lucic said.
Tkachuk extended the lead to 3-1 at 4:54 of the second period with a wrist shot from the right circle.
Edler cut it to 3-2 at 18:11 on a wrist shot from the left circle after receiving a drop pass from Viktor Arvidsson on a rush. It was Edler's first goal since Feb. 25, 2020 (80 games).