PHOENIX -- Pitcher Dan Haren wouldn't let an off-night on the mound slow him down at the plate.
Haren had a career-high four hits to overcome a shaky start and help the Arizona Diamondbacks beat the St. Louis Cardinals 9-7 late Tuesday night.
He tied a franchise record for pitchers with his four hits, set twice by former Diamondbacks hurler 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."
Kelly Johnson had three doubles and Mark Reynolds had a three-run homer off Mitchell Boggs (0-1).
Ryan Ludwick homered twice and Albert Pujols added a solo shot for the Cardinals, all off Haren.
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.