PHOENIX — Arizona manager Torey Lovullo calls Paul Goldschmidt “a severe MVP candidate.”

Goldschmidt added more evidence to back up that assessment Friday night.

The quiet slugger hit a three-run home run and the Diamondbacks held on to beat the San Francisco Giants 4-3 on Friday night to give Zack Greinke his 15th victory of the season, tied with his ex-teammate Clayton Kershaw for most in the majors.

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.

As always, Goldschmidt downplayed the numbers.

“My only focus is not on any numbers or individual stuff,” Goldschmidt said. “We’re here in the playoff race. I’m just trying to win the game, find a way to help us win tonight and kind of do the same thing tomorrow.”

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 helped Arizona pull 1 1/2 games ahead of Colorado for the NL’s top wild-card spot.

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.

“He got a good pitch there and took advantage of it,” Giants manager Bruce Bochy said. “He kind of muscled it out. That is why he’s having the type of year he is. Not just against us, everybody. You try not to have guys on base when he is up there.”

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.

“It was pretty good,” Greinke said of his outing. “I mixed it up, went in and away, a lot of different locations, a lot of ground balls, a lot of good plays defensively, too. It was good all the way around. I made a couple of mistakes to Crawford and every time he hit it hard.”

Archie Bradley struck out two in a scoreless eighth to set things up for Rodney.

TRAINER’S ROOM

Giants: 2B Joe Panik was activated from the seven-day concussion disabled list and was in the starting lineup. Panik missed 10 games. To make room on the roster, the Giants optioned INF Orlando Calixte to Triple-A Sacramento.

Diamondbacks: SS Nick Ahmed (fractured hand) has been sent to a rehab assignment at Triple-A Reno.

NEW TANDEM

Greinke was without his personal 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.

There were a few more trips to the mound than usual as Iannetta made sure he and Greinke were on the same page.

“I told him afterward I appreciate it,” Greinke said, “because it’s better to do that than make a mistake.”

UP NEXT

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.