PHOENIX -- Mired in a 1-for-17 slump, Eric Byrnes heard it from the Chase Field crowd as he walked to the plate in the 10th inning.
The hit to left field came on the first delivery from Brad Thompson (0-1) and scored Justin Upton from third base. Upton had snapped out of an 0-for-15 slide with a single -- and he was only one of the slumping hitters on a team that entered with a .225 batting average, 14th in the NL.
"I know as a team we just haven't been able to get the bats going," Upton said. "But to see guys like Eric and myself, guys who have been struggling, get some hits, that was big for us."
After being mobbed by his teammates, the usually talkative Byrnes left without speaking to reporters.
The defeat was especially painful for the Cardinals, who lost starting pitcher Chris Carpenter to a rib cage injury. Carpenter, who has not allowed a run in 10 innings, was removed in the fourth inning after straining his left rib cage swinging the bat.
The Cardinals led 3-0 at the time, and Carpenter had stranded runners at second base in each of the first three innings.
"The most important thing is that Chris Carpenter got hurt," St. Louis manager Tony La Russa said. "A 3-0 lead with him pitching, no matter what happens in the game, the most important thing is it looks like he's going to be out for a while. That kind of overwhelms everything else that happened in that game."
Carpenter, the 2005 NL Cy Young Award winner, allowed four hits in three innings, striking out two.
The 33-year-old right-hander made only four appearances last season after reconstructive elbow surgery. He underwent another procedure in November to transpose an elbow nerve that was irritating the muscles in the back of his shoulder and around his neck.
Now it appears Carpenter is headed for the disabled list again.
"I'm not happy," La Russa said. "I ain't going to fake it."
The feeling was different in Arizona's clubhouse. The Diamondbacks had stumbled to a 2-5 start, their worst since 2004, when they opened 2-6 on their way to a club-record 111 losses.
They appeared headed for another defeat until the eighth, when pinch-hitter Conor Jackson hit a go-ahead, three-run homer. But St. Louis tied it in the ninth on singles by Colby Rasmus and Albert Pujols off closer Chad Qualls, who blew his first save in two chances.
"It was a nice win for our confidence," Jackson said. "Hopefully we can carry it into tomorrow. But one game in April is not going to define us as a team."
Arizona also got a pinch-hit homer from Mark Reynolds in the fifth.
Tony Pena (2-0) pitched the 10th to earn the victory and end a five-game win streak for the Cardinals.
"Hopefully that relieves a bit of the pressure offensively for us," Arizona manager Bob Melvin said.
Melvin had run out of position players in the ninth, so he couldn't bat for Byrnes or Upton in the 10th.
"Both those guys, they're in the game, regardless," Melvin said. "And they're just going to have to grind through it. They know they're in there, and they ended up coming up with the two biggest hits. So hopefully that's good for both of them going forward."
St. Louis took a 3-0 lead in the fourth against Max Scherzer, making his first start after opening the season on the 15-day disabled list with a shoulder injury.
Scherzer left after five innings. He gave up three runs and five hits.
With Carpenter's three shutout innings, Cardinals starters have allowed one earned run over the last 24 innings for a 0.37 ERA. ... Pujols has four homers in St. Louis' first nine games. A year ago, he homered four times in the first seven games on his way to a club-record 14 homers in April.