Darvish (12-5) took a perfect game into the sixth when Jonathan Villar reached on a disputed walk with two outs. The no-hitter disappeared with one out in the eighth when Carlos Corporan smashed a Darvish offering into the seats in right field for his seventh home run.
Darvish struck out the next batter he faced for his 15th strikeout of the game -- a career high. He left after the eighth innings having thrown 115 pitches (74 strikes).
Joe Nathan pitched the ninth, striking out one, for his 35th save.
The Astros have struck out a major-league high 1,110 times this season.
Darvish retired the first 17 batters he faced -- 11 on strikeouts -- before the Villar walk. Texas catcher A.J. Pierzynski apparently thought a 2-2 pitch should have been called a strike and argued after ball four was called. He was quickly ejected.
Darvish's reaction was more muted and he struck out Robbie Grossman to end the inning.
Texas had three of its nine hits in the first inning to account for all of the Rangers' scoring. Ian Kinsler doubled with two outs off Brett Oberholtzer (2-1). Andre Beltre followed with an RBI double and then scored on a single from Pierzynski.
Oberholtzer allowed seven hits in 6 2/3 innings while striking out six and walking two.
The win completed the first four-game sweep for the Rangers over Houston. Texas has beaten the Astros 11 of the 13 times they've played this year, including a 9-1 mark in Houston. The Astros have lost their last six and 10 of their last 11.