Well, Astros rallies were the ones that collapsed. They had several opportunities against left-hander Sean Marshall and the Cubs' bullpen but instead left 12 runners on base in a 1-0 loss in front of 31,952.
"What a frustrating night," manager Phil Garner said. "Just a very frustrating night. We had some at-bats, and we hit the ball. We had guys all over the bases with chances to do something, but we just didn't [finish]."
Roy Oswalt gave the Astros an excellent chance to stretch their winning streak to a season-high five games. He only allowed one run on eight hits and two walks in his second consecutive complete-game loss.
This one was of the nine-inning kind. Oswalt slung 113 pitches and pitched one of his best games of the season.
"That was an excellent ballgame he pitched tonight," Ganer said. "I thought he was aggressive, he was sharp. I thought this was, perhaps, his best ballgame."
Too bad Marshall, a rookie, pitched one of his best big-league games. The Astros had six hits and three walks against him over his seven innings, but they left 10 runners on base.
"We definitely had some chances to score runs or at least get a run to tie it up," said Brad Ausmus, who snapped a club record 0-for-40 skid with a fourth-inning single. "You have to give Sean Marshall some credit. He did a good job of getting out of jams, made some good pitches."
So did Oswalt. The only pitches that hurt him came in the fifth, facing Michael Barrett and Todd Walker with one out.
"I got behind [Barrett], and he hit one to right-center," Oswalt said.
That hit was just a single. But the next batter, Walker, caused even more trouble for Oswalt with a double into the left-center-field gap to score Barrett.
In the bottom half of the inning, the Astros loaded the bases against Marshall. They came up empty, though, as Jason Lane flew out to deep center to end that threat.
In the seventh, the Astros had another opportunity to even the game against Marshall (5-7). Craig Biggio lined a leadoff double off the left-field wall, and Chris Burke sacrificed him to third with one out.
But Morgan Ensberg grounded out to short, and Lance Berkman, who flung his bat toward the Astros dugout in frustration, chopped a weak grounder to second for the inning's final out.
"I think sometimes they try too hard," Oswalt said of the hitters. "We had a lot of guys on third tonight. Instead of swinging at the ball like nobody's on, they're trying to feel for the ball, trying to do something with it, instead of just swinging."
Lane made another nice swing against reliever Bob Howry in the eighth. He sent right fielder Jacque Jones to the warning track, but his liner landed in Jones' glove, a couple of feet short of the seats.
"He's swinging the bat pretty good right now," Garner said. "He needs to get a break here and there."
The Astros nearly got the break they sought in the ninth. Cubs closer Ryan Dempster entered for Howry, and pinch-hitter Orlando Palmeiro drew a leadoff walk on four pitches.
Pinch-runner Willy Taveras replaced Palmeiro at first before pinch-hitter Mike Lamb struck out. Biggio continued the rally with a line shot past Dempster's glove and into center.
First and third, one out.
"All you've got to do is put the ball in the outfield," Garner said.
Again the Astros came up empty. Burke battled Dempster before popping out. Ensberg then grounded out to short for the final out.
"Ryan Dempster's a closer for a reason," Ausmus said. "He's got good stuff. He's got a good slider, and he did his job well tonight."
Oswalt did his job well, too.
"It's disappointing," Ensberg said. "He deserves better. He pitched a great game. You feel really bad for a guy who goes out there and throws nine innings. We can't get him a run, we had some opportunities, obviously, and we just didn't come through."
Kevin Yanik is an associate reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.