PHOENIX -- Paul Goldschmidt hit a three-run home run and the Arizona Diamondbacks held on to beat the San Francisco Giants 4-3 on Friday night to give Zack Greinke his 15th win of the season.
With his 30th home run and 101st RBI, Goldschmidt became the first Arizona player in franchise history to have three seasons with at least 30 homers and 100 RBIs.
Greinke (15-6) allowed three runs, two earned, and seven hits in 6 2/3 innings, striking out four with no walks. He threw a season-high 111 pitches. The Diamondbacks' ace improved to 12-1 at home this season and Arizona pulled 1 1/2 games ahead of Colorado for the NL's top wild card berth.
Fernando Rodney pitched a perfect ninth for his 31st save in 36 tries.
Brandon Crawford doubled twice, singled and scored twice for San Francisco.
The Diamondbacks sent eight batters to the plate against Ty Blach (8-10) in the third and scored four runs. David Peralta and Chris Iannetta singled with one out and the runners advanced to second on third on center fielder Denard Span's fielding error. Third baseman Pablo Sandoval couldn't bare-hand A.J. Pollock's slow grounder, allowing Peralta to score.
That brought up Goldschmidt, who lined Blach's 2-1 change-up into the left field seats and Arizona led 4-1.
The Giants went up 1-0 in the second. After consecutive one-out singles by Crawford and Pablo Sandoval, Crawford was caught trying to steal third. But Nick Hundley followed with an RBI double to the left-center gap. That brought Sandoval home just before Hundley was caught trying to take third to end the inning.
Crawford led off the fifth with a double, took third on Sandoval's single and scored when Hundley bounced into a fielder's choice to cut Arizona's lead to 4-2.
An unearned run cut the lead to 4-3 in the seventh. Crawford doubled, took third on a ground out and scored when shortstop Ketel Marte booted what would have been the third out, ending Greinke's night.
Archie Bradley struck out two in a scoreless eighth to set things up for Rodney.
Diamondbacks SS Nick Ahmed (fractured hand) has been sent to a rehab assignment at Triple-A Reno. … Greinke was without his usual catcher Jeff Mathis. Mathis, who had caught every one of Greinke's starts this season, is out 4-6 weeks with a fractured right hand. Iannetta caught for Greinke on Friday.
C.I. on Greinke: "It's easy to catch a guy like that." pic.twitter.com/nyL0b6uboV
FOX Sports Arizona (@FOXSPORTSAZ) August 26, 2017
San Francisco left-hander Madison Bumgarner (3-5, 2.87 ERA) makes his ninth start on Saturday since returning from the disabled list. He is 3-2 with a 2.81 ERA in his eight starts since returning from the DL. He spent nearly three months on the DL after bruising his ribs and spraining his left shoulder in a dirt bike accident. Arizona will counter with right-hander Taijuan Walker (6-7, 3.66), who hasn't won since June 21.