Ramirez, who scattered four hits over six innings, striking out four, went to the bullpen to throw another 20 pitches after he was taken out to build his pitch count up to about 85.
"I was happy after the six innings," Ramirez said. "My arm feels healthy and that's why I love it. Just to feel healthy again, not sore like last year. I'm just trying to be positive in my mind and not be crazy. Just stay where I am and not try to do more. Just stay in my routine and throw strikes."
Seattle manager Lloyd McClendon said he still wasn't ready to answer any questions on whether Ramirez was in the final rotation, and said the 23-year-old Nicaraguan still has work to do.
"I thought he was OK," McClendon said. "Still, we have to make better 0-2, 1-2 pitches. He got some balls up in the zone that he got away with, but on any given day you don't get away with those pitches. Even in wins, there are things you need to correct and talk about. But for the most part, he threw the ball OK."
Samardzija, who will open the Cubs' season on March 31 against the Pirates, struck out eight over 5 1/3 innings and felt much better than he did in his previous outing, when he was charged with four runs on seven hits and three walks over 3 2/3 innings. He made a few changes in his mechanics after a bullpen session or two with pitching coach Chris Bosio.
"The more I pitch, the more I realize it's little things," Samardzija said. "You start overhauling stuff too much, you'll find yourself constantly changing. Sometimes it just clicks, a lot of times it has to do with conditioning and your arm, and when your arm strength comes around, you're able to do more things than what you could do before.
"I thought we did a couple more things that kept me from flying open and kept me closed and kept the ball on the plate more," he said.
The right-hander will have one more Cactus League start before the regular season begins.
"We're ready to get going," Samardzija said. "Let's finish these last few games up strong and keep everyone healthy and get this show on the road."
The Mariners tallied in the fifth when Abraham Almonte singled with one out, stole second and reached third on a wild pitch before scoring on Kyle Seager's sacrifice fly.
Samardzija got some help from left fielder Junior Lake, who robbed Logan Morrison of a home run with a perfectly timed leaping catch at the wall with one on in the sixth. Samardzija was then pulled.
Ackley greeted lefty James Russell with a double, his third hit of the game, and Nick Franklin walked to load the bases. John Buck hit a sacrifice fly to take a 2-0 lead. Seattle added a run in the ninth on Endy Chavez's run-scoring fielder's choice.
Robinson Cano was in the Mariners' lineup for the second straight day after missing five days when he flew home to the Dominican Republic to deal with a family situation. With his first-inning single, Cano extended his Cactus League hitting streak to eight games. He went 2-for-3 with a walk, and is batting .567 (17-for-30) in 11 games.
Mike Olt, slowed by a tender right shoulder this spring, made his first start at third for the Cubs and played seven innings. He did not appear to have any problems in the field.
"It felt great to be out there, I felt like I was part of the game," Olt said. "I was a little rusty, but I'm glad I wa able to get out there and really test it out."
He would've liked to field a couple more ground balls, but the Mariners somehow waited until he was out of the game. Backup Jonathan Mota handled back-to-back plays at third to open the Seattle eighth.
"That's how it always works," Olt said. "The ball will find you when you get in there."
Up next: Chris Rusin, a candidate for the fifth spot in the rotation, will start Friday when the Cubs travel to Glendale to face the White Sox. The lefty looked sharp in his last outing against the Mets, giving up one hit over four innings and striking out two. Javier Baez, who shares the Cactus League lead in home runs with five, will start at shortstop, with Anthony Rizzo at first. The game will be broadcast on MLB.TV and on an exclusive cubs.com audio webcast at 3:05 p.m. CT.