CALGARY -- Mathieu Garon's fifth game of the season was one to remember.
"I felt like he was ready to play and I like the way he has been playing and he played very well again," Edmonton coach Craig MacTavish said. "He made a couple real game-breaking saves."
Edmonton forward Shawn Horcoff, who scored a pair of third-period goals including the winner, also commended Garon for his efforts.
"He was great for us," said Horcoff, whose first goal was his 250th NHL point with the Oilers. "We were trying to focus on keeping the shots coming from the outside and not giving them the backdoor one timers and the easy goals."
Calgary coach Mike Keenan criticized Kiprusoff for not getting over fast enough to stop Robert Nilsson's power play drive.
"It was quite obvious that our goaltender should have had that particular goal," Keenan said. "Pretty difficult to criticize people on the penalty kill situation when your goaltender is not part of the solution."
With the Oilers up 1-0 on rookie Sam Gagner's second goal of the season in the first period, Garon made his best save when he did the splits to extend out his right pad to turn aside a shot off the stick of Marcus Nilson.
"I don't want to get too much into splits, but sometimes you have to do it," said Garon (3-2). "It was a little desperate. At the end of the night it looks good, but if I've got to do the splits sometimes, I've made a mistake somewhere."
Andrew Cogliano and Dick Tarnstrom each added two assists to help lead the Oilers to their first win in five games.
"It was a big effort from the guys," Horcoff said. "We need that win and hopefully it was a step in the right direction for us."
Alex Tanguay and Robyn Regehr scored for the Flames, who have lost five straight, including three in a row at home.
"We have to get it turned around," said Calgary forward Craig Conroy, who broke out of a nine-game scoreless drought with an assist on Tanguay's goal. "Everybody talks about rock bottom -- if we're not at it, we're close. It's not going to get any easier."
Gagner opened the scoring at 2:09 of the first period when his pass from the corner bounced off of Calgary defenseman Cory Sarich into the net behind Kiprusoff.
Tanguay eventually tied it for the Flames at 17:53 when he converted a feed from Conroy past Garon. Jarome Iginla also drew an assist to extend his point-scoring streak to six games.
With the Oilers on a power play late in the first period, Nilsson blasted a shot from inside the circle past Kiprusoff to put Edmonton up 2-1. It was the first goal of the season for the son of former Flames and Oilers player Kent Nilsson.
During 4-on-4 play in the second period, Calgary defenseman Adrian Aucoin had a pair of great chances to tie the game, but Garon made a nice pad stop before turning aside the rebound with his blocker.
Horcoff swatted a rebound past Kiprusoff at 7:48 of the third period before Regehr sent a point shot past Garon during a Calgary power play 3:20 later to bring the Flames within a goal.
Horcoff, whose first goal was his 250th NHL point, then tipped Tarnstrom's point shot past Kiprusoff to finish the scoring at 13:37.
Kiprusoff made 31 saves, but lost his fifth straight game.
Edmonton forward Marty Reasoner, who had an assist on Gagner's goal, played in his 400th NHL game. ... Gagner scored both of his goals in his rookie season against Calgary at the Pengrowth Saddledome. ... Calgary forward Daymond Langkow (concussion) missed his first game of the season after being checked from behind into the boards by Vancouver's Matt Cooke on Thursday night. ... Tanguay's goal was his 500th NHL point.