Corey Perry scored his first goal in his sixth game with the Oilers and cut the lead to 5-3 at 11:14 of the third period.
"I think he brings a lot of intangibles to our dressing room, our bench and then on the ice as well," Edmonton forward Derek Ryan said of Perry. "He's a leader and he's a sparkplug. He can get us going when we're not having our best night and I thought he did a good job doing that."
Brandon Saad scored an empty-net goal at 17:07 for the 6-3 final.
Thomas gave St. Louis a 1-0 lead at 10:13 of the first on a cross-ice pass from Nick Leddy.
Leon Draisaitl tied it 1-1 with a power-play goal at 13:51.
Ryan Nugent-Hopkins gave the Oilers a 2-1 lead at 19:33 when he put in a loose puck in front of the net.
"I thought we moved it," Edmonton coach Kris Knoblauch said of the first period. "Made some really good plays with the puck, not just giving it away, we were composed. I think there was maybe a couple of shifts that weren't up to our standards and one that we got scored against, but other than that, I liked how we were just keeping our game simple, getting in on the forecheck and then spending some time in the offensive zone, because that's where we were playing our best."
NOTES: McDavid has nine assists in his past two games, and 21 points (five goals, 16 assists) in his past eight games. ... Thomas has 16 points (three goals, 13 assists) in his past 10 games and 15 points (six goals, nine assists) in 13 games against Edmonton. ... Neighbours has three multi-point games (four goals, three assists) in his past four games. ... Draisaitl has 20 points (seven goals, 13 assists) in his past 12 games and 21 points (seven goals, 14 assists) in 21 games against St. Louis. ... St. Louis was 2-for-8 on the power play; Edmonton was 1-for-3. … Oilers defenseman Evan Bouchard had an assist and has 48 points (12 goals, 36 assists) in 50 games this season. The last Oilers defenseman to have that many points through 50 games was Paul Coffey (57 in 1986-87).