PITTSBURGH (AP) -- Chris Snyder had a ninth inning to remember during Arizona's 4-3 victory over Pittsburgh on Saturday night.
The Diamondbacks catcher first hit a home run to break a 3-all tie, then threw out Luis Rivas trying to steal second base to help stop a Pirates rally.
"He obviously played an integral part in the win today," Arizona manager Bob Melvin said.
Leading off the ninth, Snyder hit a 1-1 change-up into the left-field seats against reliever John Grabow (4-2) for his sixth home run of the season. Snyder had been robbed off a possible home run in the fourth inning when Jason Bay made a running catch against the left-field wall.
"I had to put a little bit more into that one than I did the first one," Snyder said. "I was just trying to hit the ball and get on base. I was trying to do anything I could to get on base."
The Diamondbacks, who blew a 3-0 lead, beat Pittsburgh for the second straight night. Snyder's home run made a winner of Juan Cruz (2-0), who pitched an inning of scoreless relief. Brandon Lyon allowed two baserunners in the ninth inning and needed a little help from his catcher to secure his 14th save.
Mientkiewicz then walked before Adam LaRoche flied out to end the game.
"[Rivas] thought he could make it," Pittsburgh manager John Russell said. "Lyon had been relatively slow to the plate. He sped up his delivery, and the catcher made a nice throw."
Snyder said he was expecting Rivas to run.
"At some point, when they put in a pinch-runner like Rivas, he's going to go," he said. "Lyon gave me a good pitch to throw, I made a good throw and got him."
The Diamondbacks scored three runs in the first off Pirates starter Tom Gorzelanny. Chris Burke, who was hitting leadoff for the first time this season, drew a walk and was sacrificed to second by Stephen Drew. Orlando Hudson followed with a four-pitch walk.
After the rocky start, Gorzelanny shut down Arizona the rest of the way. The left-hander went seven innings for his longest outing since May 10 and allowed three runs and five hits. He struck out one and walked three.
"He had some misfires," Russell said. "But after the first, he settled in. He came a long way tonight. He threw the ball well."
Jason Bay led off the fourth with a home run to make it 3-2. Bay, who finished 1-for-4, has now hit safely in 16 of his past 18 games. His blast came a half-inning after his catch.
"Especially with the way the first inning started, it was great that we battled back and put ourselves in a position to win," Bay said.
McLouth hit a home run into the right-field seats with two outs in the fifth to tie the game at 3. His 14th homer of the season set a career high. McLouth went 2-for-4.
Haren pitched seven innings and allowed three runs and five hits. The right-hander struck out six and walked one.
"I've had good stuff the past couple of starts," Haren said. "Today, I didn't have much. We got an early lead, which was nice. I just tried to battle, and they fought back. It's a tough team to beat at home."
Young had a pair of doubles for Arizona, which scored more than four runs in a game for just the seventh time in 20 games.
"We've been battling, grinding and fighting," Snyder said. "Tonight, it worked out good for us."
Arizona has outscored its opponents 51-24 in the first inning. ... LaRoche, who came into Saturday night's game hitting .210, was dropped to seventh in the batting order. He finished 1-for-3 with a double and a walk. ... Russell said Ian Snell was OK, the day after the Pirates starter was hit in the back and left elbow by Chad Tracy's line drive. ... Mientkiewicz was charged with two errors. ... The Pirates recognized several members of the Pittsburgh Penguins, who advanced to their first Stanley Cup final since 1992 before losing in six games to the Detroit Red Wings.