Allen Craig hit a three-run homer and Carlos Beltran a two-run pinch-hit double as the St. Louis Cardinals swept Houston with a 5-4 win Thursday at Busch Stadium.
Beltran's hit in the sixth snapped a 3-3 tie, leading to the Cardinals' fourth consecutive win -- the last three against Houston this week at Busch.
Craig hit a three-run homer off Bud Norris in the first inning, but Jaime Garcia allowed a run in the first and two more in the third.
It stayed that way until Norris walked Daniel Descalso and Pete Kozma with one out in the sixth. Beltran was sent up to hit for Garcia, and the Astros countered with reliever Wesley Wright.
Beltran hit Wright's 1-1 pitch off the left-field wall, restoring the Cardinals' early two-run lead.
St. Louis reliever Edward Mujica gave up two hits around a wild pitch as the Astros made it 5-4 in the seventh.
Jason Motte pitched around a leadoff infield single and a stolen base in the ninth for his 38th save, striking out the last three Houston batters.
The Cardinals won all three from the Astros in their shortest homestand of the year, and have a weekend series with the Chicago Cubs at Wrigley Field and three more against the Astros next week in Houston.
The road trip is the last of the regular season for the Cardinals, who end regulation play with a six-game homestand against Washington and Cincinnati Sept. 28-Oct. 3.
Craig's 407-foot homer, his 22nd of the year, followed singles by Matt Carpenter and Matt Holliday.
Turning the turnstiles
The crowd of 34,788 pushed the Cardinals over 3 million in attendance for the ninth consecutive year.
The Cardinals have drawn more than 3 million fans 16 times in their history.
The Cardinals held Beltran out of the starting lineup, wanting to give his ailing right knee a little more rest..
"He's a little tight in his knee," Cardinals manager Mike Matheny said. "We're trying to be sensible about it. ... He definitely wants to be playing, but we want to be smart about it."
Beltran was replaced by Shane Robinson in right field in the ninth inning of the Cards' 5-0 win over the Astros Wednesday night, and Matt Carpenter took his place in the lineup Thursday.
Beltran's pinch-hit double Thursday extended his hitting streak to six games -- he's nine-for-19 in that span -- but has been getting more days off as Matheny tries to rest his troublesome right knee.
He hit .194 (24-for-124) with four home runs in 33 games from Aug. 1 through Sept. 8 -- the day before his hitting streak began -- and is hitting only .225 in the second half. He was batting .296 with 20 homers and 65 RBIs at the All-Star Break, but has nine homers and 24 RBIS since then.
"We need him to get going," Matheny said. "He's starting to get going, but it can't be push, push, push. Day game after night game, it's an opportunity to get Matt Carpenter in there."