SAN FRANCISCO – First, the Houston Astros thought they had a home run on Chris Snyder's long fly to left. Melky Cabrera stole that hit away.
Then, they watched as Jordan Schafer was robbed of an extra-base hit by Gregor Blanco's diving catch.
Matt Cain did the rest, pitching the first perfect game in Giants history and 22nd overall in San Francisco's 10-0 victory Wednesday night.
It was the fifth no-hitter to go against the Astros.
Blanco and Schafer were old teammates in Atlanta, and Blanco gave his friend a smile and giggle afterward.
"He was making a joke about it. It was an outstanding play," Schafer said. "I mean when I hit it, I looked up and saw (CF Angel) Pagan but there was no way for him to get it. There was Blanco. Blanco made a good play. You need those plays to throw a perfect game. You can't take anything away from Cain, he threw outstanding tonight."
Cain struck out a career-high 14 in a 125-pitch gem and got help from those two spectacular catches by his corner outfielders. He got pinch-hitter Jason Castro on a grounder to third for his 27th and final out with the sellout crowd of 42,298 roaring.
"This is incredible right now," Cain said. "It was unbelievable. The guys did a great job making it, in a way, kind of relaxing, because they were able to get on the board early."
It was the fifth no-hitter in the majors already this season and second perfect game.
Another Year of the Pitcher? You bet.
In the very ballpark where Barry Bonds made home run history five summers ago, Cain produced the signature moment for pitchers.
Cain raised both arms and slapped his glove in delight when Cabrera chased down Snyder's one-out flyball in the sixth at the wall. Blanco ran into deep right-center to make a diving catch on the warning track and rob Schafer for the first out of the seventh. The 27-year-old pitcher hugged Blanco in the dugout after the inning.
"Those were unbelievable catches," Cain said. "I mean that right there, that changes the whole thing."
Philip Humber of the Chicago White Sox tossed the majors' last perfecto at Seattle on April 21. This is the second time in three years there have been two perfect games in the same season — before that, the only other time it happened was in 1880.
Cain (8-2) accomplished a feat last done in the Bay Area by A's lefty Dallas Braden on Mother's Day 2010.
Braden tweeted Wednesday night: "What a beautiful game. Congrats 2 Matt Cain & a historic franchise & city. A special memory ill tell someones kids about! (hash)eraofthepitcher."
Not since 1917 have there been five no-hitters in a season by mid-June. The only year that came close was 1990, when Fernando Valenzuela and Dave Stewart each pitched no-hitters on June 29 — the fourth and fifth of the season.
This year, Johan Santana tossed the New York Mets' first no-hitter on June 1 and six Seattle pitchers shut down the Los Angeles Dodgers last Friday. Jered Weaver had one for the Los Angeles Angels on May 2.
The Astros were no-hit for the first time since Carlos Zambrano did so for the Cubs on Sept. 14, 2008.
"Just an incredible night," Giants manager Bruce Bochy said. "We were all pulling so hard."
The Giants made a big commitment to Cain this spring, locking him up for a long haul — and he showed exactly why general manager Brian Sabean has vowed to keep his talented pitchers. In a week when the city's attention turned to golf and the U.S. Open, Cain delivered his most impressive gem yet in his 216th career start.
The 125 pitches were the most ever thrown in a perfect game.
Cain threw 86 pitches for strikes in winning his career-best seventh straight start, faced just four full counts and still clocked 90 mph in the ninth.
"I know when I haven't given up a hit, I'm always conscious of it," Cain said. "Probably the first time through the lineup I felt like I had good stuff."
Something special, all right. It was the first no-hitter by San Francisco since departed left-hander Jonathan Sanchez did it July 10, 2009, against the Padres at AT&T Park.
The Astros were no-hit by the Giants for the second time. Marichal did it on June 15, 1963.
Even Cain thought Snyder had enough to clear the fences in the sixth. That's when the Astros realized it might be a long night.
"When the ball I hit doesn't go out and the ball that Schafer hits is caught ... I've never seen a ball hit like that into that gap," Snyder said.
Blanco said of his catch: "I didn't think I was going to make it, but I did."
Ted Barrett became the first umpire to work behind the plate for two perfect games. He also worked David Cone's 1999 perfecto at Yankee Stadium.
"He could put the ball anywhere he wanted," Barrett said. "He knew where he wanted to throw it, and he threw it there. Cone had the big, big backdoor breaking ball. It was against the Expos and I don't think they had faced him before. They were a little bit baffled by Cone's stuff."
Cain pivoted on the mound to watch third baseman Joaquin Arias make a long throw for the final out, then the celebration began. First baseman Brandon Belt caught the last throw, tucked the ball in his back pocket for safekeeping and rushed to the mound.
Catcher Buster Posey ran out to Cain, who raised his arms. His teammates jumped the dugout rail as the final out was made.
"I can't thank Buster enough," Cain said. "I didn't even question once what he was calling."
Cain's wife, Chelsea, fought tears when shown in the stands as the celebration began, then made her way to the dugout for a congratulatory hug and kiss.
Cabrera, Belt and Blanco each hit two-run homers and the Giants produced an offensive outburst rarely seen at home this season and rarely seen when Cain has pitched.
On this night, he threw nine of his initial 11 pitches for strikes, commanding his repertoire with a dazzling fastball.
J.A. Happ (4-7) lost his fourth straight start after giving up eight runs and 11 hits in 3 1-3 innings.
NOTES: Astros bench coach Joe Pettini will join Tony La Russa's NL All-Star coaching staff. ... Of the 22 perfect games, half have come in the last 24 years.