Justin Upton finished with a pair of doubles and scored twice, while Trevor Cahill pitched six solid frames, as Arizona downed San Diego, 6-2, in the middle contest of a three-game set.
Cahill (12-11) yielded two runs on five hits with four strikeouts and four walks to win his third straight. Adam Eaton had a run-scoring triple for the Diamondbacks, who have won three straight and remain 4 1/2 games behind St. Louis for the second wild card berth in the National League.
"He (Cahill) certainly gave us the innings we were looking for," Arizona manager Kirk Gibson said.
Edinson Volquez (10-11) took the loss, giving up four runs on eight hits with five strikeouts over six frames. John Baker finished 2-for-4 with an RBI for the Padres, who have dropped two in a row.
San Diego scored first, taking advantage of Cahill's inability to find the plate in the fourth. Carlos Quentin and Yonder Alfonso worked one-out walks before a pair of run-scoring singles off the bats of Will Venable and John Baker.
The Diamondbacks cut the deficit in half with back-to-back doubles from Upton and Miguel Montero in the bottom of the frame then worked their way into the lead with a crooked number in the fifth.
John McDonald beat out an infield single and moved to second on Cahill's sacrifice bunt. He walked home when Eaton slapped a triple that split the gap in left-center field. Eaton scored on a balk, Upton doubled and scored on Paul Goldschmidt two-bagger for a 4-2 lead.
"It came down to that three-run inning," San Diego manager Bud Black said of the fifth. "That was the big one. They strung together some hits and we didn't. They bunched them together that inning."
Arizona added a pair of insurance runs in the eighth to build a 6-2 edge. Montero was hit by a pitch and scored when Ryan Wheeler's high drive to right just escaped Mark Kotsay's glove and caromed off the base of the wall. Wheeler had a triple, but alertly rounded the bases on Logan Forsythe's wild relay throw.
Montero was plunked twice in the victory ... Upton now has 22 doubles on the season ... Montero knocked in his 85th run of the campaign, the most for a catcher this season ... Arizona has won eight of 12 overall ... San Diego dropped eight games behind St. Louis for the final NL playoff spot ... Cahill became the second pitcher in MLB history to pick up 10 wins and start 30 games in his first four seasons, joining southpaw CC Sabathia (2001-2004).