HOUSTON -- Adam Wainwright hasn't felt like himself this season in his return from elbow-ligament replacement surgery that cost him all of last year.
On Sunday, he finally felt close to being the pitcher he once was.
"It was the first time all year I've really felt extension out over the rubber and better life on the fastball, especially early on," Wainwright said. "I controlled the counts for the most part and let our defense work."
The victory breaks a season-long five-game winning streak for the Astros and ends a three-game skid for the Cardinals.
Cardinals manager Mike Matheny raved about Wainwright.
"Adam was great," Matheny said. "He seemed to have a real good feel with his fastball, it was sinking, he was hitting the corners. You could see that they were just off-balance and that curveball seemed to have a little extra bite to it. You just didn't see the kind of swings that you were seeing in some other games this year."
Allen Craig also homered for St. Louis, getting things going with a two-run shot in the first inning.
Greene's two-run home run in the fourth pushed the lead to 6-0 and his solo homer in the eighth made it 8-1.
Wainwright (2-3) allowed seven hits and one run with seven strikeouts in seven innings. He improved to 10-1 in 17 career appearances against the Astros -- his most wins against any team. But Wainwright believes his success was more about him than the opponent.
"I don't think it had anything to do with who I was facing, it was more just going out there executing," he said.
Wainwright is 2-0 with a 2.70 ERA in his past three starts after opening the season 0-3 with a 9.88 ERA.
Houston starter J.A. Happ (2-2) allowed six hits and a season-high six runs -- five earned -- in five innings. He has lost five straight games against the Cardinals.
"He was having a hard time keeping the ball down in the zone," Houston manager Brad Mills said. "He's been throwing the ball so well and keeping it down in the zone. He's been effective. Today, I didn't see that."
Greene entered the game with eight hits in 18 games this season. Matheny wouldn't say if a day like Sunday's could propel him into being their regular second baseman.
"We certainly look forward to getting him back in the lineup," Matheny said. "You can't expect those kind of days every day."
His performance on Sunday, where he finished 3 for 3 with a walk, doubled the RBI total he had entering the game.
Greene walked and stole second base in the sixth inning before scoring on a two-out single by Rafael Furcal.
Matt Holliday walked in the first before Craig's two-out homer, which bounced high on the wall above the Crawford Boxes in left field, gave St. Louis a 2-0 lead.
The Cardinals added a run in the second on an RBI double by Greene to make it 3-0.
Carlos Beltran walked to start the third inning. He was out at second on a fielder's choice on a grounder by Holliday. Holliday, who tripped leaving the plate, reached second on an error by Jose Altuve. A double by Craig sent Holliday home to push the lead to 4-0.
Jay robbed pinch-hitter Justin Maxwell of a hit with a nifty catch while sliding to his knees near the wall in left center field in the fifth inning. Brian Bogusevic one-upped him in the seventh when he denied David Freese of a home run when he jumped and reached back into the stands in right field for the catch.
Houston's Jordan Schafer went 0 for 4 to end his streak of reaching safely in 25 straight games to start the season. The mark ties a franchise record which was also reached by Denis Menke in 1969.
St. Louis 1B Lance Berkman, on the 15-day disabled list with a pulled left calf, experienced some discomfort when he ran on Friday, but felt better when he ran again on Sunday. "I want to get to where I can't even feel it at all and it's not there yet," he said. "But it's a marked improvement over two days ago. I'm going to try to run again (Monday) and try to push it a little bit more." ... Sunday was Altuve's 22nd birthday.