"I still feel like I've got some work to do," Hanson said. "I'm not getting impatient [for the season to start]. I'm going in the right direction, so I'll try and use these last couple of weeks to my advantage."
The Halos answered back in the bottom second, when left fielder Vernon Wells notched the first of his two hits and was promptly doubled home on a gapper by Chris Iannetta. Luis Jimenez's groundout scored Iannetta later in the frame to even the game at 2.
Those were the only two runs allowed by Mariners starter Jeremy Bonderman, who is in the hunt for a rotation spot. He had previously struggled -- six earned runs in six spring innings -- but aside from the beginning of the second, Bonderman looked relatively sharp on Friday.
"I was just trying to stay down," Bonderman said. "Use the bottom part of the zone and make them swing the bat. I only really made one mistake on that double, but I'll take it."
Seattle tacked on three more runs in the top of the sixth off the Angels' Chad Cordero. Michael Saunders started the Mariners off with a double, and he scored on a single from Nick Franklin. Raul Ibanez and Jesus Montero also drove in runs that inning.
The Halos got one back in the bottom of the sixth with a homer from Peter Bourjos, making the score 6-3.
Angels second baseman Howie Kendrick extended his Cactus League hitting streak to 12 games with his third-inning base hit through the right side. He's been on fire all spring, and he's 18-for-36 with seven RBIs after going 2-for-3 on Friday.
In the bottom of the ninth, the Angels mounted a rally, loading the bases and scoring two runs on three hits and a walk, but it fell short.
Up next for Angels: Halos ace Jered Weaver has allowed just one earned run in six spring innings this season while striking out eight. He'll take the ball against the A's at Phoenix Municipal Stadium at 1:05 p.m. PT on Saturday, as will Sean Burnett, an offseason signing from Washington. It'll be Burnett's second outing of the spring, as he has battled lower-back stiffness for much of camp. Watch the game live on MLB.TV.
AJ Cassavell is a reporter for MLB.com Follow him on Twitter @ajcassavell. This story was not subject to the approval of Major League Baseball or its clubs.