The seven consecutive hits tied a club record set in 2004 and proved to be the undoing for Pirates starter Jeff Locke.
Locke started off the third inning in good shape as he retired Aaron Hill and Matt Davidson on a total of four pitches.
Those would be the last outs he would record, though, as the next seven hitters collected five singles, a double and a home run. The homer was a three-run shot off the bat of Martin Prado and it capped the six-run frame.
"He was falling behind, so he had to make a pitch and we took advantage of that," Prado said. "I was just trying to be calm with my body and let my hands do the work."
Locke was removed when Paul Goldschmidt followed the homer with a single to center. Reliever Jared Hughes retired Hill to end the inning with the D-backs leading, 8-0.
"A tough day all around, and obviously I started it off," said Locke, who fell to 9-4. "Today was a little bit of reality check, eye-opener for me, absolutely. As somebody who usually pitches better as the game progresses, up to this point, when I needed to make a pitch, I've been able to make that pitch. You're not going to be perfect every time; at the same time, you've got to minimize damage the best you can. The Prado homer really took the wind out of our sails."
The beneficiary of the run support was Trevor Cahill, who was making his first start since going on the disabled list July 1 with a bruised right hip.
Cahill tweaked his mechanics during his time on the DL, and it looked to pay dividends for him early in the game when he was getting on top of his sinker and got the downward movement he needed.
"It felt like my debut all over again," Cahill said. "It was a weird feeling, like I hadn't done it before."
Cahill hit a speed bump in the third, when the Pirates answered Arizona's six-run output with four runs of their own. Starling Marte hit a solo homer with two outs, and Pedro Alvarez followed later in the frame with a three-run shot, his National League-leading 30th of the year.
"Trev kind of fell out of it a little bit there," Arizona manager Kirk Gibson said. "He was just trying to find the plate and threw balls down the middle and they hit a couple of home runs on him."
The win was the first for Cahill since May 17. In his two starts before going on the disabled list, Cahill allowed 12 runs in 9 1/3 innings. A big issue for him was not being able to locate the ball when he threw to his glove side -- inside to lefties and outside to righties.
After the first couple of innings he seemed to once again struggle with pitches to that side of the plate and he had trouble keeping his arm slot consistent.
"I didn't pitch great, but we won, so I'm just going to use that as positive and look at some video and work on some stuff tomorrow," Cahill said. "But for today I'm just going to enjoy the win."
The Pirates did not go quietly in this one as they put together a sixth-inning rally against reliever Will Harris and had the bases loaded before left-handed specialist Joe Thatcher struck out Neil Walker to end the threat with Arizona up, 8-5.
"Even though the game was 15-5, it was a close game," Gibson said. "They had a lot of pressure on us and we had to stop it. People are going to look at the score and think it was a blowout, but it was far from that. That's a good team over there, and they kept coming at us."
The D-backs put things away in the eighth, sending nine men to the plate and tacking on four runs. In the ninth, Goldschmidt went deep with a three-run shot, his 30th of the season, to give the D-backs a 10-run cushion and match Alvarez for the NL lead.
The 15 runs set a season high for Arizona.
"I feel like this is the beginning of what we should do from now on," Prado said.