Houston's Aaron Boone, who was activated prior to the game, didn't see any action and will have to wait to make his return to the Major Leagues from the open-heart surgery he underwent in March.
Moehler (8-10) lost for the fifth time in his last six decisions, but he certainly pitched well enough to win. He gave up three runs, only one of which was earned, and six hits in 5 1/3 innings. He's 1-2 with a 3.68 ERA in his last four starts.
Astros shortstop Miguel Tejada's errant throw on what would have been an inning-ending double-play ball in the fifth allowed a run to score, and right fielder Hunter Pence dropped a ball near the warning track in the sixth to help the Cubs take a 3-0 lead.
Considering the Astros were 0-for-7 with runners in scoring position, stranded eight men on base and needed the help of a Cubs error to score their only run, they couldn't afford to have letdowns on defense.
"We didn't play particularly well on the defensive side," manager Cecil Cooper said. "That's basically it. I thought Moehler threw the ball fine, except for the home run ball. Other than that, he'd still be pitching in the game probably if it was 1-0. That's what I told him.
"I thought he deserved a better fate. I thought he threw the ball well, hit his spots well and kept it down and moved the ball around. He did a good job. We just kicked it too many times, and then we had an opportunity to put some runs up and we didn't do anything, really."
Astros center fielder Michael Bourn had singles in his first three at-bats and has reached base via a walk or hit in 25 consecutive games, a career high and the longest active streak in the Majors. Bourn dropped down a perfect bunt in the first, had a bloop single in the third and beat out an infield hit in the fifth. He also stole his 49th base.
But Cubs starter Randy Wells (10-7), who became the first Chicago rookie pitcher to reach double-digit wins since Kerry Wood in 1998, held the Astros to one unearned run, seven hits and two walks in 6 2/3 innings. He's 2-0 with a 0.00 ERA in 20 2/3 innings against Houston this year.
"I've been fortunate to be able to pitch well against them," Wells said.
Moehler retired 12 of the first 14 batters he faced, giving up a solo homer to Bradley in the fourth that put the Cubs ahead, 1-0.
"His stuff looked crisper, he threw more fastballs tonight than he's probably thrown in some of the other starts," Cooper said. "He looked good. He threw the ball fine. You can't fault him at all."
In the fifth, Moehler got Jeff Baker to hit a sharp grounder to shortstop for what would have been an inning-ending double play, but Tejada threw the ball away. Alfonso Soriano went to third and scored on a Koyie Hill single.
"The ball slipped from my hand," Tejada said. "It was wet."
The Cubs took a 3-0 lead in the sixth, when Bradley singled and went to third after Pence dropped Derrek Lee's fly ball in right field. Bradley scored on an Aramis Ramirez single.
"I've got to make that play for [Moehler]," Pence said. "It hurts to do that to him when he does that for you. What can you do? Just keep grinding. It feels bad to let him down."
Moehler brushed off Pence's error and struck out the next batter before Cooper pulled him from the game. Moehler seemed upset at the time, but said after the game he agreed with the decision, especially considering Sammy Gervacio came in and struck out the next two batters.
"I don't like coming out of that game," Moehler said. "But I agree with the decision right there. You need to bring in Gervacio, and he got two outs. I don't have a problem. If we're up, like he said, if it's 1-0, I'm staying in the game. I have no problem with it. We couldn't really get anything going tonight."