Adam LaRoche, one of baseball's best hitters this month after being one of its worst in April, had two hits, scored twice and drove in two runs as the Pirates halted a five-game losing streak against Arizona dating to last season.
Pinch-hitter Ryan Doumit also had a three-run homer for the Pirates.
Arizona starter Doug Davis (2-5), a frequent Pirates opponent while with Milwaukee, never got into a groove against a familiar team. He allowed 10 hits and seven runs in 4 2-3 innings.
Snell (4-2) gave up more than two earned runs only once in his first eight starts and looked to be cruising with a 7-0 lead in the sixth, only to be lifted during a four-run inning that included Mark Reynolds' run-scoring triple and RBI doubles by Eric Byrnes and Carlos Quentin. But a possibly bigger Arizona inning was thwarted when Quentin was thrown out at the plate by right fielder Nady while trying to score on Robby Hammock's two-out single.
Arizona got another run back without a hit in the seventh on Jose Castillo's run-scoring throwing error in his first game at shortstop since 2004. But LaRoche doubled in the bottom half off Juan Cruz for his 15th hit in 13 games and scored on Castillo's groundout. Pinch-hitter Ryan Doumit hit the Pirates' second three-run homer of the game, in the eighth off Tony Pena. Matt Capps got the final out in the seventh and all three in the eighth, and Salomon Torres pitched the ninth. Notes: LaRoche has a .357 average in his last 13 games after hitting .133 in April. ... With Jack Wilson out with a sore shoulder, Castillo played SS for the third time in the majors. ... Arizona LF Chris Young was lifted in the second with tightness in his right groin, an inning after he led off the game with a single and stole second. ... The Pirates made a scoreboard salute to a 1960s-era pitcher who was in attendance, "Alvin Bean" - an incorrect reference to Alvin McBean, who won 15 games in 1962 and 13 in 1963. ... Neither the Pirates nor the Diamondbacks play an interleague game until June 8 - the Pirates at Yankee Stadium, the Diamondbacks at home against the Red Sox. AP-CS-05-18-07 2230EDT