Lance Berkman homered and drove in four runs during a nine-run sixth inning, then added a solo shot in the ninth against his former team to help the St. Louis Cardinals beat the Houston Astros 11-7 on Thursday night.

Berkman's three-run shot off Fernando Abad (1-2) gave St. Louis a 5-4 lead, as a mixture of cheers and boos rained down on the slugger who spent 12 seasons with the Astros.

Matt Holliday drove in three runs during the sixth inning, and Kyle McClellan and David Freese each drove in a run as four Houston pitchers faced 14 batters before finally escaping the sixth. By that point, the Cardinals had pulled ahead 10-4.

McClellan (4-0) allowed eight hits and five runs in 5 2-3 innings for the win.

Chris Johnson hit a two-run homer and Carlos Lee drove in two runs for the Astros, though they couldn't make up for the Cardinals' one big inning.

Berkman finished with four hits, a triple short of the cycle. He totaled eight hits and seven RBIs in his first series against his former team. It was his third multihomer game of the season and the 28th of his career.

The switch-hitter cracked his first homer right-handed and the second, which landed behind the Astros' bullpen in right-center, came from the left side.

Freese and Albert Pujols hit consecutive singles before Holliday chased Houston starter Nelson Figueroa and trimmed the Cardinals' deficit to 4-2 in the sixth inning.

Abad was eventually replaced by Jeff Fulchino after each batter in the St. Louis lineup hit once in the sixth, and the Cardinals had pulled ahead.

Berkman ended the scoring in that inning with a run-scoring single to right field. This time, most of the fans booed the former Houston star. After Pujols scored, he turned and pointed to a smiling Berkman at first base.

The Astros finally got out of the sixth when Colby Rasmus grounded out.

Figueroa yielded six hits and four runs in five-plus innings.

Cardinals third baseman Daniel Descalso made two errors in the eighth. A run scored on the second one before Lee drove in a run with a single to make it 10-7. Lee and Hunter Pence advanced on a passed ball before Trever Miller walked Brett Wallace to load the bases, but Pence was thrown out after trying to score on a slider in the dirt to end the inning.

Fernando Salas allowed one hit in 1 1-3 innings for the save.

Johnson's two-run shot to left-center gave Houston a 2-0 lead in the second inning. Michael Bourn doubled and scored on a single by Pence that stretched the lead to 3-0 in the third.

Gerald Laird singled home Berkman to make it 3-1 in the fifth. Berkman had a hard-hit double down the right-field line to set up that score.

Lee snapped an 0-for-16 slide with an RBI double that extended Houston's lead to 4-1 in the fifth inning. Angel Sanchez drove in a run for Houston in the sixth.

Figueroa didn't allow a hit until Freese singled to start the fourth. He was cut down at third when Figueroa overthrew first base for an error.

NOTES: Houston reliever Wilton Lopez, on the disabled list with nerve irritation in his right elbow, will throw a simulated game Saturday. ... Cardinals SS Ryan Theriot was out of the lineup for the third straight day after injuring his rib cage in batting practice Tuesday, but entered in the eighth inning.