PHOENIX -- Pitcher Dan Haren wouldn't let an off-night on the mound slow him down at the plate.
He tied a franchise record for pitchers with his four hits, set twice by former Diamondback Micah Owings. The last major league pitcher to get four hits in a game was the Chicago Cubs' Carlos Zambrano on May 23, 2008.
Haren (2-1) gave up seven runs and nine hits in six innings, retiring the last six Cardinals he faced. The Diamondbacks broke a five-game losing streak.
"The team needed a win and I did whatever I could," Haren said. "It was hard to go out there with that lineup having given up seven runs. I'd be lying if I told you that didn't creep into my head, am I going to give up 12 runs? But I did what I could."
The Diamondbacks trailed 2-0, 4-2 and 7-5 before Reynolds' homer in the fourth inning gave them the lead for good.
"Nice to answer like we did," Johnson said. "We haven't done that in the past week and that's nice, that's huge."
St. Louis starter Kyle Lohse gave up seven runs and eight hits in three-plus innings. He walked four. Leading 4-2, Lohse retired the first two Diamondbacks in the third before walking two. Gerardo Parra doubled to right-center field for two runs batted in, and after another walk Haren bounced a two-run single to left for a 5-4 Arizona lead.
"I told Danny after the game that I thought he played as complete a game as I'd ever seen," Arizona manager A.J. Hinch said, admitting that he needed Haren to keep going up to bat because the Diamondbacks have only a four-position player bench.
"I didn't have the command I wanted," Lohse said. "The ball was coming out fine, the velocity was fine I just didn't make quality pitches."
The Cardinals took the lead again on Brendan Ryan's two-run triple in the fourth off Haren, one of five hits in the inning.
The Diamondbacks turned the game over to their struggling bullpen, and it delivered. Juan Gutierrez, who came in with a 9.00 earned run average, pitched two scoreless innings, and Chad Qualls (8.44) struck out two in the ninth for his second save of the season.
"I don't know what more we could have done," Cardinals manager Tony LaRussa said. "We had some great at-bats, we got some runs and we couldn't stop them."
Diamondbacks catcher Miguel Montero, on the disabled list since April 11 with a partially torn meniscus in his right knee, was in the clubhouse before Tuesday's game and said he's feeling better after getting a second opinion on his injury. He said he's already started doing exercises on his knee though he has yet to start running or squatting, and that watching his team from home has been difficult. "Sometimes I have to shut it down [the TV] and play video games," Montero said. ... A moment of silence was observed before the game at Chase Field in remembrance of Colorado Rockies president Keli McGregor, who was found dead Tuesday morning. McGregor worked with the Diamondbacks' front office on a new spring training complex project near Scottsdale, Ariz., for both teams. ... Cardinals catcher Bryan Anderson recorded his first career major league hit, a soft single to right, in the fourth inning. ... Reynolds is dealing with a sore quadriceps, Hinch said, and is not 100 percent though he finished the game.