Upton and Montero collected three RBI apiece and Gerardo Para drove in two runs on four hits.
Wade Miley (2-1) got the win despite giving up two runs on nine hits over six innings. He struck out three.
Aaron Cook (3-8) allowed six runs on seven hits over 4 1/3 innings and took the loss in Colorado's fourth defeat in five games.
The Diamondbacks, who outhit the Rockies 14-12, led 3-2 after four innings and then added three more in the bottom of the fifth to break the game open.