PHILADELPHIA -- Carlos Beltran came up big with his bat and glove for St. Louis.
Beltran hit a go-ahead homer to the opposite field in the eighth inning and made a run-saving catch in the seventh to lead the Cardinals over the Philadelphia Phillies 4-3 on Thursday night.
"He had a great night for us," manager Mike Matheny said. "It's not easy to hit the ball out the other way, but we've had no bigger hit this season."
Adam Wainwright pitched seven solid innings and St. Louis escaped a ninth-inning jam to hand the Phillies their fourth consecutive defeat. Philadelphia put runners at first and third with nobody out against Edward Mujica, but the fill-in closer retired the next three batters.
Yadier Molina went 3 for 4 with two RBIs for the Cardinals, who had seven hits one night after getting held to Beltran's seventh-inning double in a 5-0 loss to A.J. Burnett and the Pittsburgh Pirates.
Wainwright (3-1) wasn't quite as sharp as his previous start, when he pitched a four-hitter and matched a career high with 12 strikeouts Saturday in an 8-0 win over Milwaukee. The right-hander gave up three runs and nine hits this time while striking out four and walking none.
"With a lineup like that and a hitter's park, the main purpose was to keep the ball down. For the most part I was able to," Wainwright said.
He hasn't walked a batter in 29 innings to start the season.
"It's a recipe for success," Matheny said.
Beltran broke a 3-all tie with one out in the eighth when he homered to left field off Mike Adams (0-1).
"He's a really good hitter," Adams said. "I stayed away. I made the mistake of staying out there too long and left one up just enough where he could make a pretty good pass at it."
It was Beltran's 12th career home run at hitter-friendly Citizens Bank Park.
"It's a good ballpark to hit in," he said. "Anything can happen if you hit the ball good. I hit it pretty good but I never thought it was going to leave the ballpark."
Besides the homer, Beltran also saved a run in the seventh with an excellent catch of Jimmy Rollins' two-out drive to deep right. A retreating Beltran lunged at the last second to snare a ball that was headed for the wall and surely would have scored Domonic Brown from first base with the go-ahead run.
"He made a great play," Wainwright said. "It looked like his arm extended longer than it normally is."
Mujica wriggled out of trouble in the ninth to convert his first save opportunity. Matheny chose Mujica over Mitchell Boggs, who has blown two of his four save chances this season. It appeared Mujica was about to flop, too, but he recovered quickly.
Ben Revere led off the ninth with a single and went to third on Erik Kratz's single to right. Kratz moved up on pinch-hitter Kevin Frandsen's groundout to shortstop, but Revere held at third. Rollins struck out and Freddy Galvis grounded out to end it.
"He stepped up when we needed somebody," Matheny said of Mujica. "He came in and made pitches."
Phillies ace Cole Hamels, who had a 10.97 ERA through two starts, had a second consecutive strong outing but remained winless through four starts. He allowed three runs and five hits while striking out eight and walking two in seven innings.
"I felt really good. Everything was working really well," Hamels said. "But mistakes are coming at the wrong time right now. I have to be better than good. In order to win ballgames, you have to be great. I go out there expecting perfection."
Ryan Howard went 3 for 4 for the Phillies. Galvis, playing the outfield for the first time in his career, and Chase Utley each had a pair of hits and an RBI for Philadelphia, which had 13 hits.
"We had some good chances, we just couldn't cash in on them," Philadelphia manager Charlie Manuel said. "We didn't get the big hit when we got chances. That's the best we've hit in a while."
The Phillies failed to draw a walk for the fourth consecutive game, and they've gone without one in their last 135 plate appearances. Philadelphia, which entered 26th in the majors with 34 walks, is averaging 2.1 per game this season.
The Cardinals opened the scoring with a pair of runs in the fourth. Hamels walked Matt Holliday leading off and Allen Craig followed with a line drive to right field that fell in front of John Mayberry Jr., who slipped while pursuing the ball.
Molina drove home both runners with a double down the right-field line. Phillies manager Charlie Manuel came out to argue that the ball was foul.
"It looked like the umpire might have missed it," Manuel said. "It was very, very close."
Philadelphia tied it in the sixth on three straight hard-hit balls off Wainwright. With one out, Rollins lined a double just inside first base and scored on Galvis' double off the centre-field wall that was just out of Jon Jay's reach. Utley added an RBI single.
Cardinals pitching coach Derek Lilliquist visited Wainwright after Utley's hit, and the St. Louis righty induced a pair of groundouts to end the inning.
St. Louis regained the lead in the seventh on Pete Kozma's sacrifice fly after David Freese opened the inning with a double and went to third on Jay's sacrifice.
In the bottom half, Kratz ended an 0-for-16 slump with an RBI single.
NOTES: Molina has 10 hits in his last 24 at-bats. ... Matt Carpenter took a shot off his left collarbone on Howard's liner to second base in the fourth. Matheny and the trainer came out, but Carpenter stayed in the game. ... Phillies RHP Roy Halladay (1-2, 7.63 ERA) faces LHP Jaime Garcia (1-0, 1.86) in the second game of the four-game series Friday night. ... The Phillies placed LHP John Lannan on the 15-day DL with a strained quadriceps tendon in his left knee and recalled LHP Joe Savery from Triple-A Lehigh Valley.