PHOENIX — The San Diego Padres rallied to tie the game in the top of the eighth.
Their comeback ended quickly when Kevin Quackenbush couldn't stop a light-hitting shortstop.
Yangervis Solarte hit a tying, two-run single in the eighth inning, but Quackenbush gave up a three-run homer to Didi Gregorius in the bottom half, sending the Padres to a 5-2 loss to the Arizona Diamondbacks on Saturday night.
"The ups and downs for a major League relief pitcher, especially for a guy who pitches late in the game, (is) a night like tonight," Padres manager Bud Black said of Quackenbush. "He will learn from it."
Arizona starter Vidal Nuno pitched effectively into the eighth, appearing to be in line for his first win since being traded from the New York Yankees for Brandon McCarthy on July 6. Instead, the Padres loaded the bases with one out and Solarte hit a two-run single up the middle off Oliver Perez (3-3).
The Diamondbacks answered in the bottom half off Quackenbush (2-3).
Alfredo Marte got it started by working a walk and Jake Lamb, who hit his first career homer in the second, followed with a single to left. Gregorius fell behind 0-2, but tomahawked a high fastball just over the will in right for his third hit in 40 at-bats over 11 games.
Addison Reed worked a perfect ninth for his 30th save.
"We try to get them to believe in themselves," Diamondbacks manager Kirk Gibson said. "Sometimes the results are frustrating, but they had good games tonight."
Nuno had been solid since coming to the desert, allowing three runs or fewer five times. He allowed just one hit over the first seven innings, but couldn't get through the eighth and San Diego loaded the bases.
Perez struck out Jedd Gyorko and had Solarte down 0-2, but the Padres second baseman chopped a two-run single up the middle to tie the game at 2.
Nuno gave up two runs on two hits in 7 2-3 innings, stretching his post-trade winless streak to nine games — longest to start a career by an Arizona player.
"I just try to go deep in the games," Nuno said. "The outcome has been unlucky, but just keep on fighting and I'll get it."
San Diego starter Andrew Cashner was solid in his first start since coming off the disabled list, allowing two runs in five innings. Cliff Pennington drove in one with a single in the first and Lamb led off the second with a homer to the pool deck in right-center.
Like Nuno, Cashner didn't get the result for pitching well, stretching his winless streak to nine starts despite a 3.06 ERA.
"I didn't feel that I commanded anything, but I gave us a chance to win," Cashner said. "I am a better pitcher than the way I showed tonight, but it was definitely a step in the right direction."
Lamb's homer was the eighth first-timer by a Diamondbacks rookie this season, most in the majors. He joins Nick Ahmed, Tuffy Gosewisch, Ender Inciarte, Roger Kieschnick, Alfredo Marte, Chris Owings and David Peralta. Arizona had 10 rookies hit their first homers in the 2004 season.
BLACK STUCK AT 799
Black has had three chances to win his 800th career game as a manager. He's failed to get it during a three-game losing streak that includes two to the Diamondbacks. Once he gets there, Black will join Bruce Bochy, who had a team-record 951 wins from 1995-2006, in San Diego's 800-win club.
San Diego's Cameron Maybin is 12 for 27 against Arizona this season. ... The Diamondbacks have won five of six over San Diego. ... Quackenbush had a seven-game scoreless streak (6 2-3 innings) end. ... Arizona's Mark Trumbo had his first triple since Sept. 13, 2013, at Houston, a span of 71 games and 296 plate appearances.
Padres: Gyorko was held out the starting lineup due to a tweaked left hamstring. He played through the injury on Friday after get hurt at Dodger Stadium the day before.
Diamondbacks: OF Cody Ross, on the DL since July 22, is making slow progress during his rehab from a strained left calf. Gibson said he can walk around on it and swing a bat, but is not ready for any quick movements.
Padres: RHP Ian Kennedy will make his second start at Chase Field on Sunday since being traded to San Diego on July 31, 2013. He did not factor in the decision his previous outing, allowing six runs on six hits in 4 1-3 innings last Aug. 27.
Diamondbacks: RHP Chase Anderson lasted just two innings his previous start, giving up six runs in a loss to Washington on Tuesday.