Mariners outfielder Abraham Almonte had two hits, including a solo home run, but Seattle committed four errors in a sloppy game and saw its Cactus League record fall to 13-5-2.
Almonte, who is getting a long look from new Mariners manager Lloyd McClendon as a leadoff candidate and starting center fielder, went 2-for-3 with an RBI and two runs scored.
Mariners starter James Paxton overcame his first rough start of the spring to go four innings, allowing three runs (two earned) on six hits. The young southpaw had one walk, four strikeouts and two wild pitches in a 75-pitch outing as his ERA climbed to 2.08 in four Cactus League outings.
Paxton gave up a pair of singles to Joaquin Arias and Tony Abreu leading off the first and the Giants then pushed across a run on a throwing error from second baseman Willie Bloomquist on a ground ball behind the bag hit Hector Sanchez and another on a sacrifice fly by Brandon Hicks.
Paxton gave up two runs on two hits with two wild pitches in the first frame, then surrendered the leadoff homer to Perez in the second.
Giants center fielder Darren Ford then laced a one-out shot up the middle that ricocheted off Paxton's left leg. The lanky southpaw picked up the ball, but threw wide of first baseman Justin Smoak and Ford zipped all the way to third before right fielder Logan Morrison could get the throw back in.
"The leg feels fine," Paxton said. "It squared me up pretty good, but it wasn't that bad. I'm good to go. I was telling the guys I wouldn't be very Canadian if I let that take me out of the game."
Paxton stranded Ford at third to keep the score at 3-0, but needed 45 pitches just to get through those first two innings.
Michael Saunders laced a two-run, bases-loaded single in the third when Seattle scored four times to take a 4-3 lead. Almonte led off that rally with a home run to left field, his first of the spring, and Morrison chipped in an RBI single as well.
Young left-hander Edwin Escobar gave up five hits and four runs in 2 2/3 innings in his third start of the spring for the Giants. He walked three and struck out two as his spring ERA rose to 5.19.
The Mariners scored an unearned run in the fourth when right fielder Roger Kieschnick collided with second baseman Abreu on a pop up by Corey Hart, with Almonte scoring from second when the ball glanced off Kieschnick's glove.
New Seattle closer Fernando Rodney was ejected by home-plate umpire Adam Hamari with one out in the fifth. Rodney had given up two runs on two hits and a hit batter when Hamari tossed him with a 1-1 count on Tyler Colvin after the veteran right-hander apparently said something from the mound.
Ramon Ramirez replaced Rodney and gave up a sun-aided RBI single to Perez when Almonte couldn't see a high fly on the sunny afternoon, giving the Giants a 6-5 lead.
San Francisco opened things up in the seventh with five hits and five runs (four earned) off reliever Tom Wilhelmsen, who gave up three doubles while getting just one out.
Up next: Roenis Elias, a 25-year-old southpaw who pitched in Double-A ball last year, will get his first chance to start a Cactus League game as the Mariners travel to Tempe for a 1:05 p.m. PT game with the Angels. Elias, a non-roster invitee, is emerging as a starting candidate with a strong spring (2-0, 1.23 ERA in 7 1/3 innings over three relief appearances). He'll throw about five innings or 75 pitches in the game, which is available live on MLB.TV and Gameday Audio. Veteran Scott Baker, originally slated for the start, instead will pitch in a Minor League game in Peoria after having already faced the Angels twice this spring.