Petit limited the Cubs to three hits over six innings to even his mark at 2-and-2. He was making his fifth start of the season, and his fourth since replacing the injured Randy Johnson in the rotation.
Mark Reynolds put the D-Backs ahead with an R-B-I single in the top of the first. Chris Snyder added a solo shot in the seventh before Conor Jackson hit a run-scoring double later in the inning.
Sean Marshall pitched well enough to win, allowing a run and five hits in six innings. Marshall is 4-and-4.
Jose Valverde got the last three outs for his 30th save.
The loss drops the Cubs three and a-half behind the N-L Central-leading Milwaukee Brewers.