PITTSBURGH -- Getting an eight-run lead by the third inning will help any pitcher, even one who has not won in eight starts.
Martin Prado hit a three-run home run to key a five-run third inning, Paul Goldschmidt hit his 30th home run and Trevor Cahill came off the disabled list to earn his first victory since May 17 as the Arizona Diamondbacks beat the Pittsburgh Pirates, 15-5, on Saturday at PNC Park.
Cahill (4-10) was activated after being out since July 1 because of a bruised right hip. He went five innings and gave up four runs and seven hits, while walking one and striking out four.
In his previous eight starts, Cahill went 0-6 with a 7.91 ERA.
Cahill got plenty of run support as Arizona pounded out 20 hits. Prado had four hits, Goldschmidt and Didi Gregorius each had three hits while A.J. Pollock, Aaron Hill, Wil Nieves and Gerardo Parra had two hits. Nieves drove in three runs.
Goldschmidt's three-run home run in the ninth was his 30th of the season, tying him for the NL lead with Pedro Alvarez, who hit his 30th in the third inning.
Gregorious, a rookie shortstop, broke out after going 2-for-27 in his previous eight games.
Jeff Locke (9-4) was hammered for eight runs and 10 hits in 2 2/3 innings while walking three and striking out two. Locke's winless streak reached four starts as he allowed more than three runs for only the second time in his last 18 starts.
Starling Marte and Alvarez hit home runs for the NL Central-leading Pirates.
Andrew McCutchen had three of Pittsburgh's 10 hits, and Neil Walker and Jose Tabata had two each. McCutchen has had multiple hits in 10 of his last 14 games, going 23-for-49 (.469) in that span.
Pittsburgh (72-50) lost for the sixth time in their last eight games and had their lead in the NL Central reduced to two games over the St. Louis Cardinals.
The Diamondbacks (63-58) won for the fourth time in their last five games.
Nieves' two-run double down the right-field line with two out in the first inning opened the scoring, as the Diamondbacks took early advantage of Locke's wildness.
Arizona loaded the bases on one-out walks to Prado and Hill around a single by Goldschmidt.
Arizona then sent 10 men to the plate during a six-run third inning that finished Locke and pushed the lead to 8-0.
Gregorius doubled home the first run and Cahill followed with a two-run double, before Prado capped the inning with a three-run home run, his 11th, down the left-field line.
Prado has 13 RBIs in his last 10 games.
Goldschmidt followed Prado's blast with a single, giving Arizona six consecutive hits, which tied the club record.
The Pirates cut the deficit to 8-4 in the bottom of the third when Marte hit a solo homer, his 11th, and Alvarez added a three-run blast.
Pittsburgh added another run in the sixth when Russell Martin doubled and scored on Jose Tabata's single, but Joe Thatcher preserved the Diamondbacks' 8-5 lead by striking out Neil Walker with the bases loaded to end the inning.
Pinch-hitter Jason Kubel's two-run single keyed a four-run eighth that pushed Arizona's lead to 12-5, and included a sacrifice fly by Nieves and an RBI single by Gregorius.
Goldschmidt's home run in the ninth made it a 10-run game.
NOTES: The three-game series concludes Sunday with Arizona LHP Wade Miley (9-8, 3.63) facing Pittsburgh RHP Charlie Morton (4-3, 3.79). ... The Diamondbacks optioned RHP Chaz Roe to Triple-A Reno to open a roster spot for the activation of Trevor Cahill. ... Arizona C Miguel Montero, who has been on the disabled list because of a strained lower back since July 29, began an injury rehab assignment with the rookie-level Arizona League Diamondbacks on Saturday. ... The Pirates hope RHP Jason Grilli, who has been on the disabled list since July 23 because of a strained right forearm, can begin throwing off a mound by next weekend. Grilli has converted 30-of-31 save opportunities.