Trailing 3-0 in the sixth inning, the Rangers loaded the bases with none out against Astros starter Lucas Harrell (6-5) and Adrian Beltre's single scored Craig Gentry from third.
The next batter, Cruz, unloaded on the first pitch he saw, crushing it into the Rangers' bullpen in left-center field for the decisive blow.
The rally made a winner of Grimm (1-0), who was making his first big-league start after being called up from Class AA Frisco. The 23-year-old right-hander yielded three runs on six hits over six innings, walking none and striking out seven.
Belte finished 2-for-4 with two RBI as Texas clinched its three-game interleague set against the Astros.
Harrell ended up allowing five runs on seven hits over 5 1/3 innings.
Jordan Schafer went 3-for-4 with an RBI single in Houston's loss.