Cain struck out 14 Astros, tied for the most strikeouts ever in a perfect game.
San Francisco right fielder Gregor Blanco made the defensive play of the game laying out on a dead sprint to haul in a fly ball at the warning track.
The last Giants no-hitter was thrown almost 3 years ago by Jonathan Sanchez.
Blanco and Brandon Belt both drove in three runs to help back Cain.
Source: AP