Padres' starter Woody Williams (6-4) gave up two runs on four hits over 7 2/3 innings, with four strikeouts and two walks.
Mike Cameron had two hits, including a home run, to go with two RBI and two runs scored for the Padres, who won for the first time in five games. Geoff Blum and Josh Barfield each had two hits, while Blum drove two runs and Barfield scored two.
Conor Jackson had two hits, including a home run, for the Diamondbacks, who lost their second straight.
Arizona starter Enrique Gonzalez (3-5) gave up five runs on six hits over 6 1/3 innings.