CHICAGO -- Yusmeiro Petit may be young, but he's beginning to look a lot like a crafty veteran on the mound.
The 22-year-old Petit (2-2) made his fifth start of the season and his fourth since taking the spot of the injured Randy Johnson. He allowed three hits without surrendering a walk and struck out five.
"He's a young Livan Hernandez. You can put it that way," said Snyder, who catches both right-handers. "He's going to locate, mix his pitches. He's going to throw any pitch at any time and keep guys off balance. More times than not you're not going to get a good pitch to hit."
Petit left the game after six innings because of a bruised left hand from a Ryan Theriot line drive he knocked down in the third inning. Petit doesn't expect to miss his next start.
"It wasn't bad to throw the ball but catching the ball was painful," Petit said through a translator.
Arizona won its first series on the road since sweeping Baltimore June 15-17 and won for just the fourth time in 16 road games.
"To get two wins in Chicago against a team that's been playing so well says a lot about the character of this team," said Eric Byrnes.
The Cubs dropped 3½ games behind the Milwaukee Brewers in the NL Central and finished their homestand with a 7-3 record after losing the final two games.
"It's unfortunate we only end up only 7-3, but you what, two months ago we would've been begging for 7-3," said Cliff Floyd.
Derrek Lee served the final game of a five-game suspension for the Cubs, who lost their first series at home since June 15-17 against San Diego. Chicago had won their four previous series at Wrigley Field.
The Cubs have only managed four hits in the last 15 innings.
"We need a couple of these guys to hot a little again. Getting Lee (back) is big for us. You lose your three hitter in the lineup and then you have a couple of other guys that have gotten a little cold, you need some warm bats in there and getting Derrek in there will help a lot," Cubs manager Lou Piniella said.
The Diamondbacks bullpen was dominant for the second straight game, holding the Cubs to a single in three innings. In the past two games, Arizona relievers have pitched eight scoreless innings.
"We didn't swing the bats. We didn't put any pressure on them," said Mark DeRosa.
Jose Valverde got three outs for his 30th save in 33 chances.
Cubs starter Sean Marshall (4-4) labored through the first inning. With two outs, Byrnes singled to center and stole second base. After a walk to Conor Jackson, Mark Reynolds drove in Byrnes from second with a single to left, giving the Diamondbacks a 1-0 lead. Marshall threw 26 pitches in the first inning.
Marshall gave up one run and five hits in six innings. He struck out five and walked two.
The Diamondbacks took advantage of Cubs reliever Carlos Marmol in the seventh inning. Snyder tagged Marmol for a leadoff shot on a 3-1 count. Then with two outs, Jackson drove in Chris Young, making it 3-0.
Alfonso Soriano made an error in his second consecutive game. Soriano has committed three errors on the season. ... C Jason Kendall got his first hit as a member of the Cubs in the fifth inning. Kendall was traded to the Cubs on Monday from Oakland. He broke an 0-for-9 streak since the trade. ... Byrnes made a running catch near the foul line in right on Theriot's ball in the sixth inning. After making the catch, Byrnes slammed into the pads on the wall in foul territory. ... With Sunday's attendance at 41, 705, the Cubs passed the two million mark in attendance for the season. ... Byrnes stole his 26th base of the season setting a career-high. He has stolen at least one base in seven of the last eight games.