In a ceremony before the game, the Astros honored Biggio for reaching 3,000 hits and his 20 years of service overall. Then in the sixth, Biggio told Berkman he would hit a game winner.
"Then he hits it on the first pitch," Biggio said. "It kind of gives you goose bumps."
Berkman's homer, on the first pitch of the eighth from reliever Carlos Villanueva, was his 21st of the season.
"I thought he was just blowing some hot air," a smiling Berkman said about Biggio's prediction.
Biggio had five hits on June 28, the day he reached 3,000.
"It seems like Craig has definitely fed off the big occasions this year," Astros manager Phil Garner said. "He' remarkable. He's tired, beat up a little with his shoulder hurting and he stayed up late last night for a (charity) dinner with the Sunshine Kids. Then he comes back and has this game. He's just remarkable."
Garner also thought it was an important win for the Astros.
"It was a must-win game for us," he said. "You never know about our club. We may turn it around now and go play good on the road and come back and still be in the middle of it."
In the sixth, Ty Wigginton also connected, his first home run for Houston.
Brad Ausmus hit a two-out RBI double for the Astros' second run in the eighth. Eric Bruntlett, who replaced Biggio at second base in the top of the inning, added a bases-loaded, two-run single to make it 6-2.
"Those runs that Bruntlett drove in, that was the killer right there," Milwaukee manager Ned Yost said.
Geoff Jenkins homered twice for the NL Central-leading Brewers, who remained 1½ games ahead of the Chicago Cubs. The loss kept Milwaukee from earning its first road series sweep since June 29 to July 1, 2004, at Colorado.
Houston starter Woody Williams went seven innings, allowing two runs and five hits.
"Other than Jenkins' homers, we really didn't do much with Williams," Yost said. "He is a veteran pitcher. He can command the fastball down and away, he changes speeds and has a good curve. We just didn't get anything going off him."
Milwaukee's Claudio Vargas also gave up two runs and five hits, in six innings.
Mark McLemore (2-0) pitched a perfect eighth for the win. J.J. Hardy hit a two-run homer for the Brewers in the ninth off Trever Miller, but Brad Lidge recorded the final out for his eighth save in 13 chances to bounce back from a blown save Saturday night.
Villanueva (6-3) gave up three runs and one hit in 1 2/3 innings.
Jenkins homered in the second and fourth to give the Brewers a 2-0 lead. He has 16 home runs this year.
"Williams did a really good job for them today," Jenkins said. "He was locating well and threw all of his pitches for strikes. We hit the ball at times, but we just didn't quite square up the way we would want to when we needed to. He always elevates his fastball well and he has a good command of the top of the zone."
Biggio hit his ninth homer in the fifth and Wigginton tied it with a solo shot in the sixth. Wigginton, who came over in a trade with Tampa Bay on July 28, has a combined 17 homers this season.
- Williams has allowed 27 homers, most in the majors this season.
- It was the 10th multihomer game in Jenkins' career. His last was at Washington on Sept. 15.
- It was the 12th multihomer game of the season for the Brewers.
- The homer upped Biggio's hits total to 3,029, which is 24 behind Rod Carew for 21st place on the career list.
- Milwaukee slugger Prince Fielder was ejected by plate umpire Wally Bell in the eighth for arguing a third-strike call.