ST. LOUIS -- Mark Mulder was kicking himself in the dugout for giving up a game-tying home run in the fifth inning when Jim Edmonds came to his rescue.
"I'll tell you what, I'm going to be a pretty good pitcher when I quit giving up homers," Mulder said. "It's one or two mistakes a game and they're hitting every one of them, but you know what, Jimmy picked me up."
Mulder has given up three game-tying homers in middle to late portions of games. He's allowed a team-high eight homers in 52 2/3 innings.
Albert Pujols drove in his major league-leading 44th run and David Eckstein singled twice for his 15th multihit game. The Cardinals have won six of seven overall and are 13-4 against the Diamondbacks the last four seasons.
Edmonds, who drove in three runs, has gotten off to a slow start both in the field and at the plate. He entered the game hitting .243, but is 6-for-15 with five RBI in his last five games and has hit in eight straight overall. He had a sacrifice fly off Juan Cruz (1-1) in the first after Pujols' RBI single, and his fifth homer snapped a 2-all tie in the fifth.
"I've been feeling pretty good all year but just haven't been getting hits," Edmonds told reporters. "I know you guys like to talk about all the stats and trying to jinx me.
"I'm just trying to contribute and stay in the lineup until I can get above the water."
Mulder (4-1) gave up six hits in six innings, the only damage Eric Byrnes' two-run homer in the fifth. Those are the only runs Mulder has allowed the Diamondbacks in three starts covering 24 innings, the first two appearances producing a one-hitter in 2001 when he was with the Athletics and a second shutout last year.
Mulder said he was trying to bust Byrnes with an inside fastball that drifted over the plate.
"It seemed like he didn't get many up, but I was able to take advantage of that one," Byrnes said. "There's a reason he's won so many games, he's an unbelievable pitcher."
Jason Isringhausen gave up an RBI single to pinch-hitter Johnny Estrada in the ninth before finishing for his 11th save in 13 chances and sending the Diamondbacks to their third loss in four games after a seven-game winning streak.
Mulder is 81-11 in 108 career starts with four or more runs support. His 92 victories since 2001 lead the majors, and the Cardinals have won seven of his eight starts this season.
The Cardinals opened the first with singles by Eckstein, John Rodriguez and Pujols followed by Edmonds' sacrifice fly for a 2-0 lead.
Cruz, who gave up five runs and seven hits in five innings, hit Pujols with one out in the fifth. Edmonds homered on a 2-0 pitch, sending Cruz to his first loss as a starter since Sept. 19, 2003, at Pittsburgh.
"I was behind in the count and I just threw an off-speed pitch and he is a good hitter," Cruz said. "You saw it. He just got it."
The Cardinals made it 5-2 in the sixth when Rodriguez beat out a potential double play ball after singles by pinch-hitter Larry Bigbie and Eckstein put runners on first and third.
Byrnes also singled and is batting .410 (16-for-39) in his last 10 games.
Former St. Louis Hawks NBA stars Bob Pettit and Ed Macauley were honored in a pre-game ceremony. ... Cruz hit two batters after entering the game having hit that many in his first 22 innings this season. ... The Cardinals are 15-5 at new Busch Stadium, all of them sellouts. ... Eckstein is 8-for-16 his last four games. ... Chad Tracy, who was 5-for-7 the first two games of a five-game trip for Arizona, was 0-for-4 with three strikeouts. ... Arizona's Conor Jackson singled in the fourth and is batting .353 (18-for-51) during a 12-game hitting streak.