PHOENIX -- Jake Lamb and Brandon Drury homered in a five-run third, and the Arizona Diamondbacks scored five times in an inning for the second consecutive night to beat the San Diego Padres 7-4 on Wednesday.
Zack Greinke labored through five innings for his eighth win. Arizona came back from a two-run deficit to win its eighth straight home game, improving to 23-8 at Chase Field.
The winning streak is the best for the Diamondbacks since they won eight home games in a row in July 2012.
Yangervis Solarte homered for the Padres, who lost their fourth straight overall.
Greinke (8-3) had to work out of a jam in the fifth after Franchy Cordero singled in pinch-hitter Jose Pirela, who opened the inning with a double. The right-hander struck out Hunter Renfroe and Ryan Schimpf with two runners on.
Greinke allowed three runs and seven hits while equaling his shortest outing of the season. He struck out eight and walked one but needed 102 pitches to get through five innings.
Luis Perdomo (0-3) took the loss after giving up all five runs in the third. He lasted four innings and gave up five hits with four walks, a strikeout and two wild pitches.
Solarte lined an 0-2 pitch from Greinke into the Padres' bullpen in right field to give San Diego a 1-0 lead two batters into the game.
Greinke should have been out of the third inning having retired the side in order, but with two outs right fielder David Peralta misplayed a deep fly ball in front of the warning track that was scored a triple for Cordero. Solarte punched a base hit to left field to make it 2-0.
Peralta slammed his glove on the grass in disgust, but the Diamondbacks quickly made up for his mistake.
Arizona's five-run rally started with two outs, when Perdomo walked Peralta and Paul Goldschmidt in front of Lamb.
Lamb took over the major league lead in RBIs with his 53rd on his 15th home run. Two batters later, Drury homered to center field for his fifth of the season.
The Diamondbacks went back up by three when Peralta hustled home on a wild pitch after a double steal in the seventh. Chris Owings delivered a sacrifice fly on which Goldschmidt was originally called out, but he was ruled safe upon replay review, making the score 7-3.
Fernando Rodney pitched the ninth for his 15th save after a scoreless inning by Archie Bradley that included two strikeouts.
Pirela, called up Tuesday from Triple-A, finished 3 for 3 after his eighth-inning RBI single.
HOMERS AT HOME
Arizona has homered in 11 straight home games, with 22 home runs in that span. It's their longest such streak since August of 2001.
Goldschmidt, with a walk in the third inning, has reached base safely in a career-high 34 straight home games.
Padres: RHP Jered Weaver (left hip inflammation) threw a bullpen Tuesday. He's missed 16 games while on the disabled list. . RHP Carter Capps, recovering from major elbow surgery, will get back on the mound in the next day or two, manager Andy Green said.
Diamondbacks: RHP Taijuan Walker threw four-plus innings and 64 pitches in an extended spring training game. He is coming back from a blister on his right index finger. . C Chris Herrmann, who left Tuesday's game with right hand soreness, was rested but seems likely to avoid the disabled list.
Padres: LHP Clayton Richard (4-5) will face Arizona on Thursday afternoon, his fourth outing against the Diamondbacks this season. Richard threw a complete game against Arizona on May 21.
Diamondbacks: LHP Patrick Corbin (4-6) takes a four-game home winning streak into his start against the Padres.