The Diamondbacks broke open a 1-1 game with three runs in the fourth inning, two of which came on mistakes by Cubs starter Casey Coleman (1-2).
With runners at the corners and no outs, Coleman was called for a balk, allowing Montero to trot home from third. One out and an intentional walk later, pitcher Daniel Hudson drove in a run on a fielder's choice.
The D-backs loaded the bases again and Coleman uncorked a wild pitch, allowing Parra to scamper home for a 4-1 lead.
Hudson (2-4) went seven innings for the victory, yielding three runs on eight hits and a walk while striking out five.
J.J. Putz notched his sixth save in the ninth by inducing Jeff Baker to ground into a double play after allowing a lead-off double to Marlon Byrd.
Geovany Soto hit a two-run double for Chicago, which lost for the second time in three games against Arizona.