Flames center Mikael Backlund was a late scratch with an undisclosed injury. Sam Bennett moved from right wing to center to take his place and had an assist on Tkachuk's goal.
"Playing center is something I'm comfortable with," Bennett said. "[Backlund] plays a big role on this team shutting down guys. Obviously I'm not going to fill those shoes, but I like myself as a guy that can fill in anywhere and play any position. I just tried to do my job tonight, and it's frustrating we didn't get the win."
Dominik Kahun tied it 2-2 at 11:29, tapping in a pass from Kailer Yamamoto.
Kahunwas a healthy scratch the previous two games.
"It was almost like a playoff game, it was very tight," Kahun said. "I think the biggest thing we were talking about was to outwork them, and I think we did a good job with that. All four lines were going today, all four lines were battling, and that's what brought us the win."
Flames defenseman Noah Hanifin was called for interference against Yamamoto at 6:57 of the third period to give the Oilers the power play when McDavid scored the game-winning goal.
"We got behind a couple of times and we were able to get back in the game and push along and we were able to get the third one," Smith said. "... The main focus of our group is to keep pushing forward and want to be playing our best hockey going into the playoffs. It's not a switch you can turn off and on, so we want to continue to play well."
McDavid leads the NHL with 64 points (22 goals, 42 assists) and is two goals behind Auston Matthews of the Toronto Maple Leafs for the NHL lead.