J.A. Happ threw a two-hitter and rookie Brett Wallace had a career-high three hits and drove in a run to help the Houston Astros beat the struggling St. Louis Cardinals 3-0 on Monday night.

It was another tough loss for the Cardinals, who have dropped six of seven and entered the day five games behind Cincinnati in the NL Central race.

Happ earned his fourth complete game and third shutout of his career. The Astros acquired the 27-year-old in the deal that sent Roy Oswalt to the Phillies last month. His last complete game was Aug. 27, 2009 against the Pirates, and his last shutout was Aug. 5 of the same year against the Rockies.

Happ (5-2), who hadn't gone longer than 6 1-3 innings this season, struck out four and walked one.

The Astros took an early lead when Carlos Lee's bloop single drove in Hunter Pence and made it 1-0 in the first inning.

Wallace hit an RBI-double in the seventh that bounced low off the wall in left center field to score Chris Johnson and push Houston's lead to 2-0. Johnson singled to start the inning.

The Astros added a run later in the inning when Wallace came home on Jason Castro's double-play grounder.

Randy Winn singled with one out in the first inning, but Albert Pujols grounded into a double play to end the inning. Colby Rasmus walked with no outs in the third before Happ retired the next 16 batters. Happ didn't allow another hit until Yadier Molina singled to shallow left field with one out in the eighth.

Wallace showed his defensive skills in the third when he caught a fly ball from Rasmus and tagged first for an unassisted double play to end the inning.

Cardinals starter Jake Westbrook (1-3) allowed nine hits and three runs in seven innings.

Lee walked with one out in the fourth and reached third on a single by Wallace with two outs, but Tommy Manzella's fly ball to left field ended the inning.

NOTES: The Cardinals activated RHP Jason Motte from the 15-day disabled list and optioned INF/OF Allen Craig to Triple-A Memphis. ... Houston INF Jeff Keppinger (toe) is on a rehabilitation assignment with Double-A Corpus Christi, but could return to the team as soon as Wednesday.