Sven Baertschi had a goal and an assist and the Flames hurt the diminishing playoff hopes of the Oilers with a 4-1 victory.
|More on Flames-Oilers|
|More NHL coverage|
The victory comes just over a week after an embarrassing 8-2 loss to Edmonton at home in Calgary.
"They really took it to us in that game," said Flames winger Tim Jackman, who had two assists on Saturday.
"We wanted to put that game behind us and we did with this game. It was a good road win. It's the Battle of Alberta and they were fighting for a playoff spot. We're playing every game as hard as we can and trying to prove to the organization that we all want to be here."
Flames goalie Joey MacDonald, who stopped 28 shots for the win, agreed that it was a satisfying victory.
"They kind of embarrassed us at home and when you lose 8-2 you really want to come back and beat them," he said. "We were pretty mad about that. I thought it was one of our best games. We didn't give up a lot of chances. We want to finish off this season on a winning note and prove to everybody that we are going to have a young team that is going to work hard every night."
Mikael Backlund, Dennis Wideman and Max Reinhart also scored for the Flames, who have won three of their past four.
Calgary improved to just 5-13-2 on the road this season.
Lennart Petrell scored for the Oilers, who have lost five in a row after a five-game winning streak.
The skid puts Edmonton's playoff hopes in jeopardy as it is six points back of eighth place in the Western Conference with just seven games remaining.
"It was certainly disappointing," Oilers coach Ralph Krueger said. "The fans deserved a much better game than that. We really have to look ourselves in the mirror after this one. We have to figure out what kind of team we want to be. There are still seven games ahead of us and we have some serious analysis to do right now.
"With a flatness like that down the stretch, you have to question everything."
Oilers forward Taylor Hall was frustrated.
"Where's the compete and the passion? That was missing tonight," he said. "We got scored on on the first shift. It's a really sad way to finish the season if that's the way we're going to play. We have to play like there's no scoreboard the rest of the year, like there's no standings either.
"Our third period was abysmal. There were not a lot of won battles or won races to the puck. We've got to be proud of what we're doing, proud that we're Oilers. We have to work and compete."
Calgary took the lead 26 seconds in on the first shot of the game.
Edmonton did a poor job of clearing the puck, allowing Backlund to get the puck and ring it off the post and in behind goalie Nikolai Khabibulin.
The Oilers tied it up just over a minute later as a Ryan Jones pass hit a skate in front and popped out to Petrell who powered the puck past MacDonald.
It appeared that Edmonton had taken the lead five minutes into the first period, but a video review determined that Nail Yakupov had directed the puck into the net with his skate.
Calgary went up 2-1 at 1:55 of the second period as Khabibulin was able to stop Jackman in tight, but couldn't prevent Wideman from coming in as the trailer on the play and slamming home the rebound late on a power play.
The Flames made it 3-1 five minutes into the second period as Oilers veteran Ryan Smyth fell and coughed up the puck in the slot, allowing Baertschi to score his first of the season on a low shot.
Calgary put the game away midway through the third period after another giveaway by the Oilers in their own zone allowed Jiri Hudler to make a backhand pass out front to Reinhart, who picked the top corner to score his first career NHL goal.
"We have a lot of guys injured so we have a lot of young guys in the lineup right now that are just enjoying being in the NHL," Jackman said. "They are fun to watch and fun to have around. We're not in the playoff race, so to have them come in and show how much they want it brings the best out of everybody."
It was the fourth and final meeting between the teams this season. ... Edmonton was without forward Ales Hemsky, who is expected to miss at least three games with a foot injury. Ryan Jones took his place in the lineup. ... Calgary was without a couple of its biggest offensive players as Curtis Glencross missed the game with an illness and Alex Tanguay was out with an MCL sprain that could keep him out for the remainder of the season. ... MacDonald made his first back-to-back starts of the season for the Flames. ... It was the 100th career NHL game for Edmonton's Ryan Nugent-Hopkins and the 600th for Calgary's Mike Cammalleri.