Eric Belanger scored twice for the Coyotes, including an empty-net goal with 52 seconds left to play, and Phoenix won on the road for the fifth straight time.
Ryan Stoa gave Colorado the early lead but Upshall, Keith Yandle, Belanger and Kyle Turris scored in succession for the Coyotes. The goal by Turris gave Phoenix a 4-1 lead with 7:06 left in the third.
Ilya Bryzgalov made 29 saves to get the win.
Colorado goaltender Peter Budaj made the 200th start of his career, but he did not stay around long. He was removed in the first period after giving up two goals on nine shots.
Craig Anderson made 25 saves in relief.