Jose Valverde retired all three batters he faced for his 18th save.
"I thought it was a really masterful performance," Astros manager Cecil Cooper said. "I thought he was very strong after that first inning, in particular. He ran into a little trouble in the first inning, but once he settled in, I thought he was terrific."
The Marlins had their 15-game streak of 10 hits or more snapped by Rodriguez (12-7), who struck out seven. It's the longest streak since the St. Louis Browns' 15-game streak in 1937.
"My location and my breaking ball were working very good today," said Rodriguez, who won his career-high 12th game. "My arm felt strong and I tried to finish, but I made a couple of mistakes."
Rodriguez was pounded for 10 hits and 10 runs in four innings in his previous start, on Friday in Milwaukee. He threw 26 pitches in the first inning Thursday, but threw only 64 over the next seven innings and performed like the player who won the National League's Pitcher of the Month in July.
"He worked the top and bottom of the zone and used his curveball," Cooper said. "Not a lot of changeups tonight, but he really didn't need them against that club. If you can throw your breaking balls over, you have a good chance of beating those guys.
"They are very aggressive and very good, but Wandy made pitches down in the zone. He was in command after the first inning, and even though we hadn't scored yet, he was throwing smooth. He had a lot of first-pitch strikes, and when he's down with his fastball, he's really tough to beat."
The Astros forced Marlins starter Josh Johnson (12-3) from the game after 4 1/3 innings, beating their third 12-game winner of the season. Houston beat 12-game winners Adam Wainwright and Matt Cain in back-to-back games Aug. 2-3 -- the last time it had won consecutive games prior to Thursday.
"He's gone seven innings, eight innings in most of his starts," Cooper said of Johnson. "He's a solid pitcher. It was my first good look at him. I think I'd seen him once before, but that was in my early days as bench coach. He's a good talent, no question about it. To beat him is a big feather in our cap."
Things started ominously for Rodriguez, who had the bases loaded with one out in the first inning on two walks and Tejada's error. Dan Uggla hit into a fielder's choice to drive home an unearned run, but Rodriguez got Cody Ross to strike out swinging to strand the bases loaded.
"In the first inning, he left some balls up," Marlins third baseman Wes Helms said. "But then he did what he normally does, he kept the ball down. That's normally when he has success. Down in the zone, he had his fastball, changeup and curveball working tonight. He made an adjustment after the first inning. You have to tip your cap to him."
Johnson retired nine of the first 10 batters he faced before Tejada singled to start the fourth. Carlos Lee hit a two-run homer to left one out later, and Hunter Pence homered to right-center with two outs to put the Astros ahead, 3-1.
"I guess just in that one inning he left some balls over the plate and gave us a chance," Pence said. "Carlos and I got him, and we found a way to get it done. He's got some nasty stuff, though. He just left a few up and gave us a chance."
Rodriguez picked up his second RBI of the season when he doubled home Humberto Quintero, who led off the fifth with a double, to make it 4-1. Johnson never survived the inning, leaving with the bases loaded and one out. Reliever Cristhian Martinez got Lee to hit into an inning-ending double play.
But it hardly mattered. The Astros were well on their way to their first series victory since taking two of three from Milwaukee from Aug. 7-9.
"You have to win series," Cooper said. "We talk about it all the time. If you play good baseball and win series, that's all you need to do. We need to get some breaks along the way and see where we end up, but we're not out of it and we'll keep fighting and keep scratching."