Mattias Janmark scored into an empty net with three seconds remaining for the 4-2 final.
"You need to play 60 (minutes)," Calgary forward Anthony Mantha said. "If not, you're not winning a lot of games in this league. We battled back to make it interesting. They get a spring on the power play for them and we're playing catch-up hockey at that point."
Leon Draisaitl had a goal and two assists for the Oilers (6-5-1), who have won four of five, including two straight since it was announced that Connor McDavid would be out 2-3 weeks because of an ankle injury. Stuart Skinner made 29 saves.
"It's kind of what we do now," Skinner said. "When our backs are against the wall or whenever we face some sort of adversity, we just come out strong, we come out better. That's the kind of group we've got in here. I think you've just got a crew here that isn't willing to give up."
Mantha and Yegor Sharangovich scored, and Vladar made 27 saves for the Flames (6-5-1), who have lost five of six.
"When we're playing our game, I think we are a really hard team to play against," Calgary forward Martin Pospisil said. "We just have to keep playing our game and stick with it."
Draisaitl scored 20 seconds into the first period to give the Oilers a 1-0 lead. He took a centering pass from Vasily Podkolzin in the slot, spun and lifted a backhand over Vladar's blocker.
He has six points (three goals, three assists) in the two games without McDavid.
"He's playing unbelievable," Hyman said. "His whole line is playing great, and he's really driving the bus right now for our team in all areas of the game. He's been phenomenal."