ST. LOUIS -- Joel Pineiro had no intention to gloat about his newfound prowess at the plate.
Pineiro has eight hits this year, matching his career total coming into this season.
"That's not my job," he said. "My job is to go out there and pitch and hopefully give them a good start"
And he did, again.
Pineiro (8-9), in seven innings, gave up one run, struck out three and allowed five hits in getting his third win in five decisions after losing five in a row and eight of nine. It also marked his first win since April that he didn't pitch a complete game.
• D-Backs: Send Lopez to Brewers for minor leaguers
He also went without allowing a walk for the fourth consecutive game and for the 10th time this season. It's a consistency that manager Tony La Russa said has been there all season, despite Pineiro's less-than-impressive record.
"He's actually pitched this way almost every time this year," La Russa said. "His record is so deceiving. A lot of times, like today, we haven't scored for him and he's had some tough pitcher luck. He's been outstanding all year long; consistently outstanding."
Ryan Franklin secured four outs for his 22nd save in 23 attempts this season. It marked the fifth time he's gone more than one inning for a save, tied for second in the majors with Oakland's Andrew Bailey. San Francisco's Brian Wilson has seven.
The Cardinals didn't have much more success against Arizona starter Yusmeiro Petit (0-4). Petit, making his third start since coming off the disabled list with a strained right shoulder, had one of his best outings this season in which he's struggled from the start. He lasted six innings, his longest outing this year, and his six strikeouts marked his best since whiffing six in his season debut April 11 against Los Angeles.
He allowed three hits, matching his best effort this season, and walked four before being pulled for reliever Juan Gutierrez to start the bottom of the seventh.
Albert Pujols singled in the fourth for the Cardinals' first hit. Two outs later Yadier Molina and Mark DeRosa walked to load the bases to bring up Pineiro, hitting in the eighth spot. It was the pitcher's second double of the season and raised his RBI total to three.
"The back-to-back walks was probably the toughest part of that inning," Arizona manager A.J. Hinch said. "You do have the pitcher up, but Pineiro swings the bat OK. He's not an automatic out obviously. In that lineup, the guy you want up at that point is the pitcher."
The Diamondbacks, who have won only one of the nine games in which Petit has appeared this season, scored their run in the fifth. Chad Tracy's ground-rule double down the left-field line scored Gerardo Parra from third and the Diamondbacks had runners on second and third with one out.
But Pineiro induced Petit to ground back hard to the mound and Felipe Lopez grounded out to short to end the Arizona's threat.
"He's not trying to strike you out," Tracy said of Pineiro. "He knows what he does best, and that's locate that sinker. I'm not going to say it's nasty. It's a decent sinker, but it's like I said, he relies on his defense."
Pineiro notched 12 of the 21 outs on groundballs and retired two more on popups to infielders.
"We don't win if he doesn't pitch that way and I'm not sure we score if he doesn't get that base hit," La Russa said.
Ryan Ludwick went 0 for 3 to snap his 11-game hit streak. He was 18 for 41 during the streak with a .439 average. ... Miguel Montero went 1 for 3 and finished 7 for 12 with two home runs in the series. ... DeRosa's walk put him on base for the first time since joining the Cardinals on June 28 from the Indians. He's hitless in 15 at-bats as a Cardinal.