It was the Red Wings' 18th consecutive home win. They have not lost in Joe Louis Arena since Nov. 3. It is the longest such streak in the NHL in 36 years.
Edmonton put itself in position to end the streak when Sam Gagner scored midway through the second and again early in the third.
That allowed the Oilers to overcome a 2-0 deficit, but Miller put Detroit back in front with 9:14 left in regulation.
Zetterberg added an insurance goal with 5:16 to go. Cory Emmerton and Johan Franzen also scored for the Red Wings.
Gagner has eight goals and seven assists during a five-game point streak, but the Oilers lost their second straight.