On April 12, 2008, Cain took a no-hitter into the seventh inning against the St. Louis Cardinals before allowing a leadoff double to Albert Pujols; he allowed two runs in innings and hit a home run against Todd Wellemeyer but received a no-decision as the Giants lost 8–7 in 10 innings. He allowed two runs in eight innings and hit a home run against Brandon Backe on May 13, earning the win as the Giants defeated the Houston Astros 4–2. He struck out a season-high 11 batters on June 15 while giving up three runs in seven innings, but he took the loss as the Athletics beat the Giants 4–0. He threw eight shutout innings on July 1, striking out 10 and earning the win in a 2–1 victory over the Cubs. On July 24, despite battling the flu, Cain threw a shutout, helping the Giants beat the Nationals 1–0. Cain went 8–14 with a 3.76 ERA. He had 186 strikeouts (tied with Ricky Nolasco for eighth in the league) and innings (fifth in the league). His 14 losses were tied for fourth in the league with Johnny Cueto, Backe, Braden Looper, and Zach Duke (behind teammate Barry Zito's and Aaron Harang's 17 and John Lannan's 15); he was one of eight NL pitchers to make 34 starts. Cain's season record was deceiving, as he received the lowest run support in the NL.