Feldman and four relievers issued seven walks, and the score might have been a lot worse if Seattle didn't strand 12 and go 5-for-18 with runners in scoring position.

"We as a team had too many walks, and most of the time wouldn't be in the game as much as we were," Showalter said.

Saunders hit a three-run drive in the fifth and added a clinching two-run shot in the ninth. It was his fifth career two-homer game, the second this season.

Justin Smoak homered and went 3 for 3 with two walks for the Mariners, who had lost 10 of their previous 12 games against Baltimore. Brad Miller had three hits and Kendrys Morales singled twice in his fifth straight multihit game.

Erasmo Ramirez (3-0) retired 18 of the first 20 batters he faced, the exception being solo homers by Matt Wieters and Manny Machado.

The right-hander gave up four runs and four hits in six-plus innings to win his third straight start. The right-hander was lifted after giving up two hits to open the seventh. Both runners ultimately scored to cut the Mariners' lead to 6-4.

But Baltimore couldn't complete the comeback.

Danny Farquhar got four outs for his first major league save.

Baltimore shortstop J.J. Hardy missed his first game of the year after manager Buck Showalter opted to give him a day off. Hardy and Machado had started 150 consecutive games together on the left side of the infield, the fourth-longest streak since 1946, according to STATS.

Seattle took control with a four-run fifth that made it 6-2. With two outs and a runner on second, Michael Morse hit a broken-bat RBI single. Smoak followed with a single to chase Feldman, and Saunders greeted T.J. McFarland with his ninth home run, the second in two nights.

"Fortunately for the first four innings I was able to limit the damage on that, kind of got a little lucky, pitched around a lot of baserunners," Feldman said. "But you can't make a living like that and it finally caught up to me there in the fifth."

Showalter was ejected by home plate umpire Larry Vanover in the seventh for arguing a called strike on Nick Markakis. After the ejection, Markakis singled and went to third on a double by Adam Jones before Charlie Furbush gave up a sacrifice fly to Chris Davis and an RBI single to Wieters.

Saunders' second homer, off Darren O'Day, decided the issue.

"We're always looking to extend the lead, obviously," Saunders said. "To get a couple more cushion runs in the ninth there I'm sure took some pressure off Farquhar."

Feldman got off a shaky start, allowing a leadoff single and a walk before striking out Raul Ibanez with two outs and runners at second and third.

In the second, Smoak drove a hanging curveball over the right-field wall. Wieters answered in the bottom half, ending an 0-for-25 drought with his 15th home run.

Ibanez stranded two more runners in the third, but Seattle went up 2-1 in the fourth. With the bases loaded and one out, Miller hit an opposite-field bloop to left that dropped in front of Nate McLouth. All three runners went halfway down the basepaths, uncertain if the ball would be caught, and Smoak was thrown out on a rare 7-5 force that produced a run.

Machado tied it in the Orioles half with his 10th home run.

NOTES: Machado hit his major league-leading 40th double, his first in 23 games since July 6, in the eighth. ... Orioles RHP Jason Hammel, who's on the DL with a right flexor mass strain, had an MRI that revealed inflammation of the ulnar nerve. "It came back as about as good as it could have been," he said. ... Orioles 2B Brian Roberts became a father Saturday. The couple named the boy Jax, and Showalter says Roberts could return from paternity leave on Sunday. ... Former Orioles pitcher Joe Saunders will start the series finale Sunday for the Mariners. Baltimore will counter with LHP Wei-Yin Chen. ... Seattle's Nick Franklin went 0 for 4 and is hitless in his last 21 at-bats. ... Kyle Seager walked twice, but his 10-game hitting streak against the Orioles ended. ... The Orioles optioned RHP Steve Johnson to Triple-A Norfolk after the game.