Penner connected on a one-timer from the high slot that beat Coyotes goaltender Ilya Bryzgalov with 21.3 seconds left on the clock.
The win ended a five-game losing streak for the Oilers and sent Phoenix to its fourth loss in five tries.
Penner's goal capped a 3-goal third period for the Oilers. Taylor Hall and Linus Omark scored early in the period to give Edmonton a 3-2 lead before Scottie Upshall tied it for Phoenix at 8:29.
Upshall also scored in the first period and Kyle Turris had a goal in the second period.
Jean-Francois Jacques added Edmonton's other goal in the second period and Devan Dubnyk made 24 saves in the victory.
Beautician charged with giving client fatal silicone butt injection
Astronomers offer more expansive view of universe