Rios struck an RBI double in the first inning, singled in the third, belted a solo homer in the fourth and capped the cycle with a run-scoring triple in the sixth, becoming the eighth player in Rangers history to pull off the feat.
Leonys Martin contributed a bases-clearing double and Elvis Andrus went 3-for-4 with an RBI for the Rangers, who pulled within one game of idle Cleveland for the second American League wild-card spot with six games to play.
Derek Holland (10-9) tossed his seventh career shutout, blanking the Astros on six hits. He issued one walk and struck out nine in the 113-pitch effort.
Jordan Lyles (7-9) was lit up for seven runs on seven hits in a three-inning stint as the reeling Astros dropped a 10th straight.
Millions of Getty images now available for free via embed tool
Boston schools pull out free condoms over wrapping complaints