SAN DIEGO -- Javier Vazquez is happy to be back in the National League, and the results are starting to show.
Vazquez (3-2), who held San Diego scoreless until the seventh, struck out eight and walked none as he won his third straight start after three difficult outings at the start of the season.
"I know all the (NL) teams really well," said Vazquez, acquired from the New York Yankees in the Randy Johnson trade. "It was tough in the American League because I didn't know the players as well. It's nice to be back."
Vazquez threw the 17th complete game of his major league career, the first since a three-hit shutout for the Montreal Expos against San Francisco on Aug. 18, 2003.
Vazquez was 14-10 with a 4.91 ERA in his only season in the AL with the Yankees. He spent his first six seasons for the Montreal Expos.
In winning each of his last three starts, all on the road, Vazquez has allowed just four earned runs in 24 innings, lowering his ERA to 5.11.
"Other than his first start, he has pitched really well," Diamondbacks manager Bob Melvin said.
Vazquez was nearly untouchable for the first six innings as Arizona built a 3-0 lead. He allowed just one base runner to second base, on a two-out double by Miguel Ojeda in the fifth inning.
"He's a horse," said Phil Nevin, who hit a solo home run in the ninth. "He threw a great game. He's a guy who is capable of shutting down any lineup."
Despite a 2-3 career record against San Diego, Vazquez has allowed only four earned runs in 42 innings over five starts against the Padres since August 2001, a 0.86 ERA.
Arizona had lost 10 straight at San Diego, winning its only other game at Petco Park on April 16, 2004.
Shawn Green had three hits, including an RBI double for the Diamondbacks, who finished a 4-2 trip.
"I was glad to be able to pick up the team," Vazquez said. "I have been aggressive in the strike zone and using all my pitches. I have confidence I can pitch like I have in the past."
Woody Williams (2-2) allowed three runs and six hits in 5 2/3 innings with four walks and five strikeouts.
Luis Gonzalez hit an RBI double in the first and scored on a single by Green as Arizona took a 2-0 lead, and Royce Clayton added an RBI single in the fourth.
"I put us in a hole," Williams said. "They scored two runs in the first inning, and the way he was pitching, we were pretty much done then."
Dennys Reyes walked the first two batters in the seventh, allowed an RBI single to Troy Glaus, then walked two more batters, forcing in a run.
Ojeda drove in San Diego's first run with his first career triple in the seventh.
San Diego's Brian Giles went 0-for-4, lowering his batting average to .193. ... The Diamondbacks set a franchise record of 87 2-3 errorless innings when CF Quinton McCracken caught a fly ball by Mark Loretta leading off the fourth. The streak came to an end in the sixth when 1B Chad Tracy committed an error. The previous record was set in 1999. ... Sean Burroughs, the Padres' third baseman, played at SS for the first time in the major leagues as part of a late-inning defensive switch. ... San Diego SS Geoff Blum was held out of the starting lineup for the second straight game with a bruised chest, an injury sustained when he collided with LF Ryan Klesko on Friday night.