Cespedes pulled a 2-2 slider from Charlie Furbush (0-1) into the left-field bullpen. Cespedes' second homer of the season came after Jed Lowrie drew a leadoff walk.
Josh Donaldson added a solo home run in the ninth, his third, off Lucas Luetge.
A's starter Scott Kazmir pitched two-hit ball for six innings, striking out nine without a walk.
Dan Otero (2-0) retired two batters in the seventh. Luke Gregerson worked the eighth and Sean Doolittle allowed one hit in the ninth for his first save.
Chris Young made his first start since Sept. 9, 2012, while with the New York Mets. Troubled by shoulder problems all last season, he went to spring camp this year with the Nationals, was released and signed during the last week of training camp by Seattle.
Young pitched six shutout innings, giving up four hits. He walked three and struck out two.
Young's other outing for Seattle was a two-inning scoreless stint in relief.
Kazmir didn't allow a runner and struck out six the first time through the lineup. The Mariners got back-to-back, one-out singles by Brad Miller and Robinson Cano in the fourth, but Kazmir retired Corey Hart on a grounder and struck out Justin Smoak with a 78 mph changeup.
The Mariners' only other scoring threat came with two outs in the sixth when Brad Miller sent right fielder Eric Sogard to the wall to bring down his flyball.
Cano, who singled in the fourth, has a 14-game hitting streak against Oakland dating to Sept. 22, 2012.
Seattle now hits the road for seven-game road swing, starting against the Rangers on Monday.