OAKLAND, Calif. -- Brandon McCarthy nearly got caught up in the moment when he received a standing ovation as he trotted out to the mound to work the ninth inning.
This was one fun game for the right-hander.
"As much time as I've spent hurt, and you've got everyone out there and behind you when things are going well, it kind of makes you feel like you're on top of the world," McCarthy said. "I had to remember to focus and not get caught up in it."
McCarthy (8-7) matched his career high of 10 strikeouts and faced only four over the minimum while beating Seattle for the first time in three starts this season. He allowed three singles and finished the gem in style, slipping a called third strike past Mike Carp on his 114th pitch.
The Mariners didn't have more than one baserunner in any inning and only got two as far as second base.
"He just never made a mistake," Seattle catcher Josh Bard said of McCarthy. "Everything was on the edge. He was ahead all day."
McCarthy retired 11 of his final 12 batters and got a big lift from Oakland's defense in the ninth. Dustin Ackley, who had one of the three hits off McCarthy, hit a grounder up the middle that second baseman Jemille Weeks backhanded with his glove and flipped to shortstop Cliff Pennington, who threw to first for the second out.
"That play was awesome," McCarthy said. "They were trying to upstage me there. They're going to get all the highlights and it's well-deserved. That was a really nice play."
Pennington also had a two-run double and Scott Sizemore homered to help the A's win their third straight after dropping five in a row.
Oakland's second straight win at home came after a 4-6 road trip that included long rain delays, a doubleheader in Boston and a a 16-inning loss to Cleveland.
Ichiro Suzuki and Josh Bard had the other two hits for the Mariners. Seattle also had a runner reach on an error but couldn't sustain much of anything against McCarthy, who seemed to be just as strong in the ninth as he was in the first.
"Sometimes when you haven't been out there in the ninth inning it can be difficult psychologically," A's manager Bob Melvin said. "But the fact that there were no runners made the decision easy for me. Just a great game."
McCarthy's fourth complete game of the season was his first shutout since blanking Houston on May 24, 2009, when he was still with Texas.
Seattle was shut out for the 13th time this season. The Mariners were held to three hits or fewer for the ninth time this year.
"The story for me was our offense, or lack of," Seattle manager Eric Wedge said. "A ton of swing and misses today. Their guy did a nice job, but I felt like we should have done a better job. We had some pitches to hit today, but we just look a little bit long up there with our swings today."
The A's didn't get their first runner until Kurt Suzuki's one-out walk in the third. Weeks followed with an infield single on a ball that glanced off the glove of diving second baseman Ackley.
The A's made the most of that one.
Matsui went to second on David DeJesus' one-out single, and both runners scored when Pennington doubled down the left-field line on a 3-0 pitch with two down.
Pennington also committed his team-leading 20th error of the season when he bobbled Kyle Seager's grounder in the fifth. It was the A's 109th error, the club's most since making a franchise-record 125 in 2001.
Sizemore hit his eighth home run of the season leading off the fifth.
Pineda (9-9) didn't pitch poorly, allowing only five hits and striking out seven. But the All-Star rookie didn't receive any run support and remained winless in his last five starts.
Suzuki finished 1 for 4 and needs 42 hits over the final 24 games to reach 200 for the 11th consecutive season.
Pennington hit a foul ball in the sixth that stuck in the facemask of catcher Josh Bard. ... Oakland CF Coco Crisp left the game in the fifth after fouling a ball off his right foot. ... The A's reinstated LHP Brian Fuentes from the bereavement list. ... Trevor Cahill (9-13) pitches for Oakland in the series finale Sunday and will attempt to snap a personal four-game losing streak that is one shy of his career high. Blake Beaven (3-4), who got the win against Oakland on Aug. 1, goes for Seattle.