SAN DIEGO -- Joe Saunders and the Arizona Diamondbacks were just about flawless.
Justin Upton and Kelly Johnson back Saunders' solid outing by driving in two runs apiece as the Diamondbacks won their third straight game.
Saunders (7-8) had two outs in the ninth inning when he allowed a home run by Jesus Guzman for the only blemish of the evening.
"It's no fun to lose a shutout," Saunders said. "But he kind of ambushed me there. You live and you learn and I'm just happy about the complete game."
Saunders had not thrown a shutout since May 14, 2010. The complete game, the sixth in his career, was his first since last Aug. 3 against Washington.
|More on D-Backs at Padres|
"Joe was great," Arizona manager Kirk Gibson said. "Kind of hoping he'd get a shutout. He threw a real good change up and throwing all his pitches in all the counts. It was what we needed."
Saunders overcame his season-long, first-inning struggles as he allowed six hits, struck out four and walked two. Saunders came in having surrendered 16 earned runs in the first inning of his 20 starts this season for an ERA of 7.20.
"He realized after the first two innings that his fastball was moving," said San Diego's Orlando Hudson. "We were missing it, rolling over it. He was using his fastball on both sides of the plate very successfully."
Upton, the Co-NL Player of the Week along with San Diego's Cameron Maybin, hit a solo homer and drove in a run with a sacrifice fly. In his last seven games, Upton is 15 for 26 with three homers and 13 RBI.
"It was a breaking ball and if you square it up, it will go," said Upton about his home run. "When I hit it, I thought it was line drive in the gap. I didn't think it was going to get out. It was definitely a surprise, especially in this stadium."
Johnson had three hits, including an RBI triple, and Willie Bloomquist also had three hits with two runs scored.
"We scored quite a few two-out runs," Gibson said. "A lot of production from the top of our order. A pretty productive night."
Hudson's mental mistake allowed Arizona to score an unearned run in the sixth after Upton's 18th home run with one out off Dustin Moseley (3-10). Chris Young followed with a walk and stole second base. After Miguel Montero was walked intentionally, Brian Roberts lifted a pop up to short right field.
Hudson easily went back and made the catch while running toward the first base line. He apparently forgot the number of outs because he tossed the ball underhand to the ball girl in foul territory. The girl tossed the ball into the stands.
Young and Montero each moved up a base on the play and were awarded an extra base with the ball went out of play, allowing Young to score.
"You see it every now and then," Hudson said. "Life goes one. Nobody's perfect."
Said Padres manager Bud Black: "You don't see that, especially from a player of Orlando's caliber."
San Diego, which leads the majors with 110 stolen bases, failed to steal a base for the first time in 13 games. The Padres, who returned home after playing 26 of their previous 36 games on the road.
Moseley allowed five runs and seven hits over seven innings.
While batting in the third inning, Moseley lined a ball down the right-field line, then crumpled at the plate while holding his left shoulder. He got up in time to run safely to first base, but trainer Todd Hutcheson came out onto the field. Moseley stayed in the game.
Moseley confirmed it was a reoccurrence of an injury from June 8 when he suffered a slight left shoulder dislocation while batting.
Rob Johnson left the game in the top of the seventh inning with a bruised right hand. X-rays taken were negative. ... Diamondbacks LF Gerardo Parra (sore left wrist) was held out of the starting lineup for the second straight game after being hit by a pitch on Saturday. ... OF Collin Cowgill, whose contract was selected from Triple-A Reno, made his major-league debut in left field.