SAN DIEGO -- The Arizona Diamondbacks used spacious Petco Park to their advantage Saturday night.
The Padres have been shut out a major league-high eight times in 33 games. They dropped to 6-14 at home, worst in the majors.
Hudson (3-4) held San Diego to five hits in seven innings while striking out six and walking none. Only one Padres baserunner made it to third base against the right-hander. He threw 107 pitches, 75 for strikes.
"This ballpark plays so big at night that you just want to go after these guys," Hudson said. "They're a pretty scrappy team so they're obviously not going to beat you with home runs too often so you just go out there and throw strikes, and the rest takes care of itself."
Arizona won for just the second time in 12 games at Petco Park dating to 2009.
Upton gave the Diamondbacks a 6-0 lead when he homered to left-center on a 2-2 pitch from Dustin Moseley with one out in the fourth, his seventh. Roberts was aboard on a single to right.
"Originally there wasn't any doubt, then I realized what park I was playing in," Upton said. "I got it pretty good and it skimmed the back of the fence. It's a lesson learned; you never know if you have a homer here."
Manager Kirk Gibson said the Diamondbacks' approach was to try to get hits up the middle.
"When you do that, you tend to hit home runs, like Justin," Gibson said.
After Upton's homer, the Padres retired the final 17 Diamondbacks batters.
Moseley (1-4) saw his ERA rise from 1.63, second-lowest in the majors, to 2.47. He allowed a season-high six runs, five earned, in five innings, one less than he had given up in his previous six starts combined. He allowed seven hits, struck out three and walked three.
"I was just missing a little bit, a little bit off," Moseley said. "The cutter wasn't there at all. It didn't help me, it hurt me. It was backing up and they were whacking it. I wasn't ahead in the count, throwing first-pitch strikes like I had in previous starts and that's what hurts you."
The Padres have given Moseley the lowest run support in the majors, an average of 1.03 runs per game.
Roberts singled to center with one out in the first, advanced on Upton's groundout and scored when second baseman Eric Patterson overthrew Moseley covering first on Drew's grounder for an error.
The Diamondbacks batted around in the third, scoring three runs on three singles and three walks, two intentional. Drew and Melvin Mora had RBI singles and Juan Miranda brought in a run with a groundout.
Padres manager Bud Black received his NL Manager of the Year trophy in a pregame ceremony and was honored with a bobblehead giveaway. ... With St. Louis losing 4-0 to Milwaukee, Arizona is the only team in the NL, and one of only three teams in the majors, that hasn't been shut out this year. ... Drew was replaced in the field by Josh Wilson.