PITTSBURGH -- Yusmeiro Petit wasn't upset that he came close to a no-hitter, allowing a lone single in the eighth inning. After all, his second straight win after almost a year of losing helped solidify his spot in the Arizona Diamondbacks' rotation.
Petit combined with Leo Rosales on a one-hitter, and the Diamondbacks beat the Pittsburgh Pirates 6-0 on Tuesday night.
"There's no disappointment at all," Petit said through translator Miguel Montero about losing the no-hitter. "I felt good because it's a good game. Unfortunately, I give up the single but I still feel good about the start."
Petit (2-5), who snapped a seven-game losing streak with his first victory in more than 11 months in his most recent start, walked three and struck out four in eight innings. The right-hander threw a season-high 108 pitches -- 74s for strikes -- in going longer than seven innings for the first time in his career.
"It's a natural when a pitcher has got a lead to go right after guys, and he was able to do it with multiple pitches," Arizona manager A.J. Hinch said. "He threw a little cutter, threw a little breaking ball, threw a little changeup. He wasn't just throwing fastballs down the middle; he was able to get guys to put the ball in play and get outs. That keeps a defense on its toes and it keeps the game flowing."
Fellow Venezuelan Ronny Cedeno lined a 76 mph changeup for a single to left after Ramon Vazquez led off the eighth with a walk, ending the quest for what would have been the second no-hitter in Diamondbacks history. Randy Johnson threw a perfect game May 18, 2004, at Atlanta.
"I didn't try to put too much pressure on myself in my last at-bat," Cedeno said. "I just wanted to put the ball in play.
"He threw a very good game today. One hit? I'm lucky."
Ryan Roberts went 4 for 5 with two home runs for Arizona, which has won five of six and is 17-10 since July 4, while Chris Young homered and Mark Reynolds had three hits and an RBI.
Arizona had won only two of Petit's previous 10 starts but he pitched six shutout innings against Philadelphia in his last outing, his first win since Aug. 23.
Petit, who said he didn't realize he was throwing a no-hitter until a fan yelled to remind him during the fifth inning, was 8-15 with a 5.76 in 59 appearances, 29 starts, in his career.
"The last few starts I feel like I'm part of the rotation now because I'm helping the team and pitching a lot better," Petit said.
The Pirates have lost three straight and eight of 10. They have been shut out in their last three meetings with Arizona over the past 11 days. They have been shut out 13 times in all, most in the majors.
All three Arizona homers off Pirates starter Zach Duke went to left-center field -- the deepest part of PNC Park.
Roberts entered the game with three career homers over 82 games in four seasons with three teams. He hit a solo shot in the third and another with Stephen Drew aboard in the fourth, meaning three of his four homers this season have come against Duke.
"I would have loved to be part of [a no-hitter]," said Roberts, a second baseman who had three putouts and two assists. "Every ball that's hit to me, I want to make a play. I love to see people do that and be part of it."
Roberts' second homer came three batters after Young's two-run shot, his seventh, ended an 0-for-19 drought.
Duke (9-10) allowed five runs, nine hits and two walks in five innings, striking out one. It was only the third time this season he allowed more than four earned runs in a game, the first since June 8.
"I left some pitches up, and they got hit hard," Duke said succinctly.
Pittsburgh has scored only 13 runs in his 10 losses.
"Obviously, their guy pitched a great game," Pirates manager John Russell said. "We were fortunate, I think, to get one hit.
"It was just one of those nights. Things didn't go well on the mound, and when you don't pitch very well, things like that tend to happen."