ST. LOUIS -- A five-run rally in the ninth inning by a dormant St. Louis offense kept Chris Carpenter's nine-game winning streak alive.
The Cardinals were stymied on six hits before coming from behind after eight innings for only the third time in 43 attempts this season.
"In one way it's lucky and in one way that's what it's all about," Edmonds said. "They said we let Chris off the hook, but we let ourselves off the hook."
Yadier Molina hit a three-run homer -- his third hit of the game -- earlier in the inning. It helped rescue Carpenter, who leads the major leagues with 17 victories and hasn't lost since June 8.
"What a great game it was," Carpenter said. "It's all about what we did in that last inning."
Julian Tavarez (2-2) allowed an inherited runner to score in the ninth but got three outs for the win.
The Cardinals opened the ninth with four straight hits off closer Tyler Walker. John Mabry doubled and So Taguchi had a single before Molina's sixth homer. It was his first homer since being activated off the 15-day disabled list on Thursday without a rehab assignment, even though he missed 33 games with a broken hand.
"So much for rehab, right?" St. Louis manager Tony La Russa said.
Pinch-hitter John Rodriguez then singled to knock out Walker. Abraham Nunez singled with one out off Jeremy Accardo (0-3) and, after another out, Edmonds hit the game-winner off the right field wall on the first pitch from Jason Christiansen.
"Not much of an at-bat," Christiansen said. "One pitch, a fastball. It was supposed to be down and away, I left it up somewhat away."
"He did everything we could have asked of him," catcher Mike Matheny said. "He just did a great job, and that's a shame."
Carpenter, who leads the major leagues in victories, gave up four runs -- three earned -- and nine hits in eight-plus innings. He has allowed 14 homers in 188 1/3 innings, tied for the staff low with Matt Morris, but has given up five in his last three starts.
The homers have produced all but one of the seven runs Carpenter has allowed in that stretch.
Hennessey, who had two singles, dominated the Cardinals for the second time this season, having thrown seven scoreless innings in San Francisco on July 9. He had struggled in his previous two starts, both losses, giving up 11 earned runs in 7 1/3 innings, but again found a way to baffle the team with the major leagues' best record.
Manager Felipe Alou used four pitchers to escape the eighth when the Cardinals put runners on first and second with one out.
"I didn't want to stay that long with the kid, so that ought to tell you how we felt about what could happen," Alou said. "We have some guys here that have been overworked.
"The closer's arm, you could see all of those pitches he threw and he didn't throw one quality pitch."
Vizquel hit a 3-1 pitch over the right field wall for his third homer in the sixth and added a bunt single in the fourth, making him 10-for-22 against Carpenter for his career. Durham hit his ninth homer with one out in the seventh.
Consecutive singles by J.T. Snow, Moises Alou and Durham to start the ninth made it 3-0 and chased Carpenter. Second baseman Mark Grudzielanek's throwing error while going for a double play allowed a fourth run to score from second.
Carpenter has worked seven or more innings in 11 straight starts, six of them complete games.
- Vizquel committed only his fifth error of the season in the fifth when he tried to turn Molina's grounder up the middle into a double play and bobbled the ball as he stepped on second to field it.
- Matheny, a fan favorite with the Cardinals from 2000-04, got a standing ovation his first trip to the plate.
- A crowd of 46,200 was the Cardinals' 33rd sellout and 25th straight crowd above 40,000.
- Alou, activated from the DL before the game, was 1-for-4.
- Taguchi singled in the ninth and is 20-for-42 during a career-best 12-game hitting streak.