Matt Cain carried a no-hitter into the eighth inning and finished the job himself, pitching the Giants to a 4-2 victory over the fading Rockies on Sunday, according to an Associated Press report.