The win gave Houston its first series sweep of the season and first series win since the opening three games.
Johnson's first homer of the season off Chris Schwinden (0-1) was a three-run shot to leftfield that put Houston up 3-0 in the second inning. Jed Lowrie and Brian Bogusevic reached on consecutive singles.
Johnson went deep again in his next at-bat, this one a two-run homer to left center that pushed the lead to 5-0. It was the first career multihomer game for Johnson and first by an Astro this year.
Rodriguez (3-2) yielded six hits and a run in seven innings to lower his ERA to 1.64. He has won three in a row and allowed just three runs combined in those starts after opening the season with two consecutive losses.
In other games *
At St. Louis, Carlos Beltran drove in a career-best seven runs with a pair of three-run home runs and RBI single in the first three innings and the Cardinals punished A.J. Burnett (1-2) and the Pittsburgh Pirates, 12-3.
* At Washington, Bryce Harper made a tumbling barehanded catch in centerfield and then led off the ninth inning with a double to set the stage for Ian Desmond's two-out game-ending home run that gave the Nationals a 5-4 victory over the Arizona Diamondbacks.
Harper, the No. 1 overall pick in the 2010 draft, also had his first multihit game with two doubles and scored his first career run by knocking the ball out of the catcher's glove.
The Nationals snapped their own five-game losing streak and ended the three-game winning streak of the Diamondbacks.
* At Denver, Pinch-hitter Jason Giambi launched a three-run homer off Scott Elbert in the ninth inning, lifting the Colorado Rockies to an 8-5 win over the Los Angeles Dodgers.
Before the game, the Rockies optioned struggling righthanded pitcher Jhoulys Chacin to Triple A Colorado Springs. Chacin is 0-3 with a 7.30 ERA this season.
* At Cincinnati, Bryan LaHair and Ian Stewart hit solo homers and Jeff Samardzija (3-1) pitched into the eighth inning as the Chicago Cubs defeated the Reds, 3-1.
* At San Diego, Jeff Suppan pitched five solid innings to win his first game since 2010, leading the Padres to a 5-0 win over the Milwaukee Brewers. The 37-year-old Suppan, called up from Triple A Tucson to start in place of the injured Cory Luebke, had not pitched in the majors since Oct. 3, 2010. Cameron Maybin and Jose Guzman each drove in two runs for the Padres.
The Los Angeles Dodgers are in talks with veteran Bobby Abreu regarding a role as pinch-hitter and part-time outfielder, according to an ESPN The Magazine report.
Anaheim released Abreu on Friday after the 38-year-old journeyman got off to a painfully slow start in limited at-bats. He played for the Phillies from 1998-2006.