Barnes hit a solo homer in the second inning and had a run-scoring triple in the fourth on Friday night. He singled in the sixth inning and completed the cycle with a sharp groundball double down the right-field line in the eighth inning.
It is the eighth time an Astro has hit for the cycle and the first time since Luke Scott did it on May 28, 2006, against Arizona.
The center fielder is the first right-handed hitter to accomplish the feat since Craig Biggio did it on April 8, 2002, at Colorado.
Barnes pumped his fist after he beat the throw into second base on his double.