"Well get better," said second baseman Dustin Pedroia, half sarcastically. "We're in first."
Boston's lead over Tampa Bay in the American League East was trimmed to one-half game, thanks mostly to the pitching of Houston left-hander Brett Oberholtzer.
There are no upsets in Major League Baseball.
"They have talent," Pedroia said of the Astros. "This is the Major Leagues. It happens."
Oberholtzer, making only his second start, allowed the Red Sox just four hits over seven innings.
No Boston runner reached third base until Jonny Gomes doubled to lead off the seventh and advanced to third on a fly out by Jarrod Saltalamacchia. But Stephen Drew, who was 10 for his last 20, and Brandon Snyder struck out to end the inning.
"Oberholtzer has proven in a short period of time he has the ability to throw strikes," manager John Farrell said. "The opportunities we did have, which were not too often, he was able to get a key strikeout in a couple of spots. The guy threw a heck of a game against us.
"The first time you see a guy, you have a decent feel for what he has on paper. Until guys get in the box, you're not going to have a read on how the ball is going to travel through the strike zone."
The Red Sox nearly scored in the eighth off the Astros' bullpen, which has been unreliable much of the year. Jacoby Ellsbury walked to lead off the inning and moved to third on a two-out bloop single by David Ortiz.
Josh Fields came on to strike out Mike Napoli, and then struck out all three Red Sox in the ninth to earn his first save of the season.
The Astros set a season high with six stolen bases. The Red Sox expected Houston to run, but they threw out only two.
"We have some guys who can create problems," Houston manager Bo Porter said of his running game. "We feel like we have some guys that can push the envelope in certain situations."
Boston starter John Lackey (7-9) pitched six-plus innings, allowed eight hits and both runs. The Astros scored their second run on a suicide squeeze in the seventh after Lackey had left game.
Lackey injured his left ankle in the second inning fielding a slow bouncer and throwing out the runner.
"I rolled my ankle pretty good," he said. "I've done it several times, different sports. It didn't feel real great, but I wasn't going [to leave the game]. I pitched fine. I don't think it affected the way I threw the ball."
"John had very good stuff, got some key strikeouts when he needed to," Farrell said. "Obviously when a guy goes down making a play, you've got immediate concern. We continued to monitor it closely every pitch he threw, every inning he went through. There's no question he pitches with a lot of heart. He never wants to come out of a game. Unfortunately, he pitches on a day we come up on the short end."
The Red Sox finished the game with only five hits, never two in one inning, and left eight on base. They struck out six times in the last three innings.
"We had some chances to score and just couldn't do it," catcher Jarrod Saltalamacchia said. "I saw some pitches I probably should have done more with. [Oberholtzer] never gave in. He didn't miss over the plate too much."
Lackey pitched well, but you can't do much without any runs.
"I can only control how I pitch," he said. "I had a pretty good breaking ball, got some swings and misses on that. It's frustrating. Hopefully next time things work out better."
The Astros touched Lackey for two singles, sandwiched around a walk that led to a run in the fifth inning. He gave up a double by L.J. Hoes and a bunt single by Jonathan Villar that set up Houston's other run in the seventh.
"I probably should have thrown a breaking ball to [Hoes in the seventh] with two strikes," Lackey said. "I'd take that one back."
"John threw a great game," Saltalamacchia said. "He kept us in it the whole game. He did a great job staying in there."
He just didn't get much help.