The worst-hitting team in the NL raked San Diego's ace for eight runs and defeated the Padres 9-6 on Wednesday night to take a one-game lead over San Diego in the NL West.
The eight earned runs matched a career high for Peavy, who lasted only four innings, his shortest start since July 21, 2006.
"OK, he wants to pitch with three days off, we've got to make him pay," said Diamondbacks catcher Miguel Montero, who hit two home runs, one off Peavy.
Conor Jackson added a home run and Chris Young drove in three runs as the Diamondbacks restored the one-game lead they carried out of San Diego a week ago, when the Padres beat them three out of four.
"I picked a bad night to have a bad night," Peavy said.
Jose Valverde got three outs for his major league-leading 42nd save in 49 chances.
The Diamondbacks rebounded from a crushing 10-2 loss in the series opener by outscoring the Padres 18-7 over the next two nights, roughing up Padres aces Chris Young and Peavy.
"They kind of sent a message to us over there (in California), and after the first game here, when they beat us up, we needed to send a message back," Arizona manager Bob Melvin said. "The guys responded beautifully the last two games against two of the better pitchers in all of baseball."
With the division lead on the line, Peavy (16-6) had asked to pitch on short rest, and manager Bud Black agreed.
It was easy to understand why Peavy wanted another shot at the Diamondbacks. In his first four starts against them this season, he was 3-0 with a 1.71 ERA and had 45 strikeouts in 26 1/3 innings. He matched his career high by striking out 16 Diamondbacks on April 25.
He wasn't the same this time, even though he struck out Stephen Drew to open the game.
With two out in the first, Eric Byrnes hit a one-hop shot off Peavy's right leg for a single. After waving off the trainer, Peavy threw two balls to Jackson, then gave up a 405-foot home run to the left field seats.
With two out in the fourth, Montero homered to right field on a 1-2 pitch to put the Diamondbacks ahead 3-2. Montero also went deep off Brett Tomko in the seventh.
"Jake just couldn't put them away and make the pitch," Black said. "And you've got to give the Diamondbacks a little bit of credit. They laid off some pitches and worked the counts full."
Melvin said his players "took it personal" that Peavy had asked to face them on short rest.
"They wanted to win today," Melvin said. "This guy's had our number, so guys were grinding hard today. That's probably as focused as I've seen us all year."
Still, Peavy looked as if he might escape with a victory when San Diego loaded the bases with no outs in the fifth. After Hernandez got Milton Bradley to ground into a 6-4-3 double play, during which one run scored, Gonzalez belted one deep into the right-field seats to give San Diego a 5-4 lead.
But Peavy immediately squandered the lead in the bottom of the inning. He walked leadoff man Drew, then gave up a triple to Orlando Hudson, who later left the game with a sprained left thumb.
Peavy was removed after walking Byrnes and Jackson to load the bases with no outs.
Peavy allowed eight runs on seven hits, walking three and striking out four.
"Felt good, just didn't make a whole lot of quality pitches to show for anything," Peavy said. "I just feel bad the team scored six runs. I should give a better effort and win with that."
Black brought in Doug Brocail, who gave up a bases-clearing double to Young to put the Diamondbacks ahead 8-5.
Hernandez went five innings, allowing five runs and seven hits. He walked two and struck out one.
- Byrnes stole two bases to extend his steal streak to 27. He has 42 steals in 48 attempts.
- Arizona RHP Juan Cruz retired one batter in the sixth, then came out because of tightness in his right shoulder and neck. Shoulder injuries have sent Cruz to the disabled list twice in six years.