PHOENIX -- Josh Fogg regained his command.
Fogg allowed 14 runs -- 10 earned -- on 15 hits in nine innings in his previous two starts. But against the Diamondbacks, Fogg (2-2) walked three, struck out two and didn't allow his first hit until Chad Tracy led off the fifth with a solo home run.
"I felt good," Fogg said. "I was able to locate fastball. I wasn't able to do that my last couple of starts."
Pirates manager Lloyd McClendon said Fogg had more than his fastball on his side.
"I thought his changeup was excellent," McClendon said. "When he has his command and is in the strike zone with all four pitches, he's tough."
Matt Lawton went 3-for-4 with a walk, and the Pirates finished with 14 hits against five Arizona pitchers.
"I was glad to have the three runs," Fogg said. "It's good to get those runs early. When you get a two- or three-run lead like that, it allows you to relax and pitch."
Fogg left after walking pinch-hitter Alex Cintron leading off the eighth.
Mike Gonzalez finished the eighth for Pittsburgh, and Jose Mesa completed the two-hitter by pitching the ninth for his 11th save of the season and 21st straight overall. Mesa has saved all but one of the Pirates' 12 victories.
"Our bullpen is so dominating that when we get the right matchups we feel pretty good when we have a lead," said McClendon, whose club is 8-0 when leading after seven innings and 10-0 when leading after eight.
Tracy's home run was his fourth. He also drove in Arizona's second run with a two-out sacrifice fly in the ninth. Craig Counsell had Arizona's other hit, a single to right leading off the sixth.
The Diamondbacks turned their major league-leading 37th and 38th double plays, but it was the two potential double plays Arizona couldn't turn that proved costly.
Jason Bay hit a grounder to third with one out and Lawton on first in the first. Third baseman Troy Glaus fielded the ball cleanly but nonchalantly flipped the ball to shortstop Royce Clayton at second, allowing Bay to beat the relay throw to first. Daryle Ward followed with a single and Rob Mackowiak doubled into the left-field corner, scoring Bay for a 1-0 lead.
In the third, with one out and runners on first and second, second baseman Craig Counsell backhanded Tike Redman's sharp grounder and threw to Clayton for the force, but Redman beat Clayton's throw by a half-step. Bay then hit a broken-bat bloop single to shallow center to score Jack Wilson and give the Pirates a 2-0 lead.
Tracy said he thought Redman was out at first.
"I thought we did (had the double play) but the umpire called it different," Tracy said. "His is the only opinion that counts."
Pittsburgh made it 3-0 in the fifth. Mackowiak singled and Jose Castillo lined a pitch off Arizona starter Russ Ortiz's right forearm for an infield single. Arizona manager Bob Melvin left Ortiz (2-2) in the game, but he lasted just two more batters. David Ross flied out to center, allowing Mackowiak and Castillo to advance, and Wilson singled to left to bring home Mackowiak.
"He threw those pitches and I was ready to get him out of there right there and then but he said he was OK," Arizona manager Bob Melvin said.
Kerry Ligtenberg relieved Ortiz and escaped the jam when Ross was caught trying to come home on a botched suicide squeeze and Fogg flew out.
Ortiz allowed three runs on 10 hits in 4 1/3 innings.
"I looked at the tape and I had one bad hitter," Ortiz said. "But other than that I threw some good pitches they didn't swing it and they laid off some. I felt like I was for the most part making my pitches. I don't feel like it was necessarily a horrible game. It was just one where it didn't work out."
Pittsburgh GM Dave Littlefield said 1B Craig Wilson will be placed on the 15-day disabled list Sunday because of finger injury. Wilson was hurt doubling during the Pirates' loss Friday night. ... In Ortiz's last two starts, he has allowed 10 runs on 17 hits with nine walks in eight innings. ... Because Castillo was caught stealing, Ligtenberg pitched 2-3 innings but faced only one batter.