Tomas Tatar and Niklas Kronwall scored for Detroit (10-9-3), which lost the final two of its five-game homestand to finish 2-1-2. Justin Abdelkader had two assists, and Jimmy Howard allowed four goals on 19 shots and was replaced by Petr Mrazek in the second period.
"They won all the battles tonight," Red Wings captain Henrik Zetterberg said. "They are fast and very skilled, and when we don't play with our speed, we are easier to beat."
The Oilers, who had 13 players with at least one point, outshot the Red Wings 14-3 in the second period and scored three goals to break open a game that was tied 2-2 at the end of the first.
"We played the type of game that you need to win games in this league," coach Todd McLellan said. "Instead of needing Connor and Leon [Draisaitl] to get us two or three goals, we had four lines playing hard and contributing to a win."
With Detroit forward Scott Wilson down after blocking a shot, Khaira got to the loose puck and beat Howard to put Edmonton ahead 3-2 at 10:24.
Wilson left the game with a lower-body injury and will be re-evaluated Thursday.
Letestu, playing his 500th NHL game, gave the Oilers a 4-2 lead at 14:22 when he scored on the rebound of a Michael Cammalleri shot to end Howard's night.