HOUSTON -- Wandy Rodriguez bounced back from a bad outing and shut down Florida's surging offense.
Florida's run of 10-hit games ended at 15, the best stretch since the St. Louis Browns had one that long in 1937, according to the Elias Sports Bureau. The record is 18, set by the 1922 Browns and matched by the 1925 Cleveland Indians.
The Marlins couldn't come close to extending their streak against Rodriguez (12-7), who allowed an unearned run, struck out seven and picked up an RBI with an unlikely double. Jose Valverde finished the four-hitter for his 18th save.
"I threw my breaking ball well and I used it a lot," said Rodriguez, who threw 103 pitches. "My location and my breaking ball worked pretty good."
With Roger Clemens sitting in the stands, Rodriguez gave up no more than one run for the seventh time in eight starts. He rebounded well after giving up 10 runs in an 11-2 loss in Milwaukee last Friday.
"I missed a lot on my location in the start in Milwaukee," Rodriguez said. "Tonight, I concentrated on my location and I was very good."
Carlos Lee and Hunter Pence hit home runs against Florida ace Josh Johnson (12-3), who lost for the first time in seven starts.
"I never really got into a rhythm," Johnson said. "I wasn't throwing my slider for a strike and I wasn't throwing my changeup for a strike. So, all I had was a fastball and that is what happens when all you have is a fastball."
Rodriguez's only bad inning was the first, when the Marlins loaded the bases with one out. Geoff Blum fielded Dan Uggla's bouncer and touched third, but Uggla beat the throw to first to score Emilio Bonifacio.
Hanley Ramirez beat out an infield single with two outs in the third to stretch his hitting streak to a career-high 15 games. But Florida's offense produced little after that.
"Once he settled in after that first inning, he was terrific," Cooper said of Rodriguez.
Miguel Tejada led off the Houston fourth with a single to right. One out later, Lee homered to left, his 21st of the season and second of the series. Blum grounded out before Pence hit a solo home run to center, his 19th.
Johnson allowed two home runs in a game for only the third time in 25 starts this season. He lasted 4 1/3 innings, his shortest outing since July 1.
"It was just one of those days where it seems that nothing is right," Johnson said. "You have to try to get through it, and I just could not get through it."
Humberto Quintero led off the Astros' fifth with a double to the left-field corner. With Florida's defense drawn in, Rodriguez faked a bunt, then drove his second double of the season off the right-field wall for a 4-1 lead. It was only the second RBI of the season for Rodriguez, who came in hitting .091.
Rodriguez retired 15 in a row, five on strikeouts, after Ramirez's single in the third. He threw only 93 pitches through eight innings.
Ramirez did not score a run for the first time in nine games. ... Lee has four home runs and 15 RBI in August. ... Marlins 1B Jorge Cantu was scratched about an hour before the game with stiffness in his neck. Gaby Sanchez replaced him. ... The Astros acquired minor league infielder Jose Vallejo as part of the deal that sent catcher Ivan Rodriguez to the Texas Rangers. The 22-year-old Vallejo was the Rangers' minor league defensive player of the year last season. Vallejo will report to Triple-A Round Rock on Saturday. ... Clemens pitched for Houston from 2004-06 and has a home in the area. His son Koby is a minor leaguer in the Astros organization.