Tyson Barrie had a goal and an assist, Ryan Nugent-Hopkins had two assists, and Mikko Koskinen made 29 saves for Edmonton (5-1-0).
"That could be some of the best hockey we played all season," Oilers coach Dave Tippett said. "Our second period was arguably our best period of the year; a couple of mistakes, a couple of bad bounces and we're chasing the game. And once they got the lead in the third, they shut it down pretty good."
Giroux gave the Flyers a 1-0 lead 7:22 into the first period, taking a long rebound off the end boards on a shot from Travis Konecny and scoring on a wraparound.
Thompson made it 2-0 at 10:05, capitalizing on a giveaway behind the net by Koskinen.
"They're very explosive, and you can't really take a shift off against them because they can make plays out of nothing, it seems like," Flyers forward James van Riemsdyk said. "It was a strong effort by us, a big two points."
Barrie cut it to 2-1 35 seconds later, taking a backhand pass from Leon Draisaitl in the Philadelphia zone and lifting a shot over Hart's shoulder at 10:40.
"I think we had enough chances, especially in the second period," Nugent-Hopkins said. "The second period, if not our best, may have been one of the best we have played so far this year. We definitely had enough chances. The bottom line is they just got that extra one. That is just the way it goes in this league. I thought we worked hard and kept pushing at the end but, unfortunately, couldn't get it."
McDavid tied it 2-2 on the power play at 19:42 on a centering pass from the left face-off circle that was deflected in by Braun.