Malkin, who was recognized for playing his 1,000th NHL game on Sunday, flipped a backhander over Dan Vlader’s glove. After Malkin scored, he threw his stick into the crowd and celebrated with his teammates.
Sidney Crosby and Rickard Rakell also scored in the tiebreaker for the Penguins, who improved to 6-1-1 in their last eight games overall. Jan Rutta scored in regulation, and Tristan Jarry made 33 saves for his 100th NHL win.
Dillon Dube scored in the second period for the Flames, who had won two in a row. Calgary has four wins in its last six games overall following a seven-game losing streak.
Vladar, making his fourth start of the season, and first since Nov. 10, stopped 38 shots.
Rutta opened the scoring at 2:09 when he beat Vladar with a blocker-side wrist shot from between the circles.
Pittsburgh appeared to take a 2-0 lead on a Bryan Rust goal. But it was waved off because of an offsides call following a coach’s challenge.
Calgary then tied it at 1 at 8:37 of the second when Dube redirected a Chris Tanev shot behind Jarry.
The Penguins celebrated Malkin in his first home game after appearing in his 1,000th career regular-season game on Sunday at Chicago.
Malkin’s teammates all wore his No. 71 jersey during warmups. Malkin’s wife, Anna, and 6-year-old son, Nikita, joined him on the ice during a pregame ceremony. He received personal gifts commemorating his 1,000th career game, including a silver hockey stick.
Calgary played the fourth game of a season-long six-game road trip.
The Flames lost the first game of the trip against Tampa Bay, but rebounded with wins against Florida and Philadelphia prior to Wednesday’s shootout loss against the Penguins. Calgary closes the trip with games at Washington and Carolina.
The Flames have at least a point in their last seven games at PPG Paints Arena, dating to the 2015-16 season.
Flames: Continue a six-game road trip Friday at Philadelphia.
Penguins: Visit Washington on Friday.