Elias ran into double trouble in this one, allowing five two-baggers among his eight hits, while getting outpitched by Angels veteran Jered Weaver.
Elias gave up four doubles in a span of five batters in the second inning alone, the last three driving in runs for a quick 3-0 deficit that the Mariners never quite could overcome even after the youngster settled in and kept the game within reach.
"He was a little up in the zone and in the middle of the plate that inning," said catcher Mike Zunino. "We sort of got away from being fine on the corners and left some mistakes in the middle. And they didn't miss 'em. But he did a good job refocusing that next inning and getting right back in the strike zone."
Elias fell to 3-4 with a 4.02 ERA on the season and is 0-2 with a 5.33 ERA in his last four starts. He had one walk and five strikeouts in a 92-pitch outing before manager Lloyd McClendon went to his bullpen.
Weaver improved to 6-1 with a 2.01 ERA over his last eight starts and is 6-3 with a 2.99 ERA on the season as the Angels evened the series at 1-1. The three-time All-Star befuddled some of the younger Mariners with his slow curve and excellent location and did what was needed on a night he admitted he didn't have his best stuff.
"You're not going to go out there and be crisp every time out, but you still have to go out and battle," Weaver said. "I told [catcher Chris Iannetta] before the game it's going to be one of those days where we have to go out there and battle and try to make the most of it, and we ended up doing all right."
Weaver is now 14-9 with a 3.30 ERA in 29 career starts against the Mariners.
"This guy is a proven winner," McClendon said. "He's a veteran. He knows what he's doing out there and he's pretty crafty. He kept us off balance. I thought we battled all night with him and got some hits, some big hits and scored some runs. We got close, but just no ice cream tonight."
Seattle is 25-26 on the season, but 5-2 against the Angels, who moved to within a game and a half of first-place Oakland in the American League West at 29-22.
David Freese, C.J. Cron, Erick Aybar and Iannetta all laced well-hit doubles in the second frame after Elias had zipped through the first in order.
Seattle got a run back in the bottom of the second with a double of its own by Dustin Ackley, followed by an RBI single to right from Nick Franklin.
Franklin snapped an 0-for-11 skid with his base hit while filling in for Robinson Cano at second base and finished 2-for-4. Cano took a day at designated hitter to rest his legs and went 2-for-5, including a run-scoring single in the ninth, to put his average at .333 with a team-high 31 RBIs.
The game seemed to be getting away from Elias when he loaded the bases with no outs in the fourth, but he got Howie Kendrick to ground into a double play that scored one run before finishing the inning with a Mike Trout flyout to right to keep the score at 4-1.
First baseman Justin Smoak led off the fourth with a home run to right field off Weaver, his seventh long ball of the season and first since May 12.
"He's starting to pick it up again," said McClendon. "His at-bats are starting to get better again, particularly for the left side. He made some adjustments with [hitting coach Howard Johnson] and I think we're going to see some good things from him."
Seattle then loaded the bases with two outs and Weaver allowed another run to score with a wild pitch to make it 4-3.
But the Angels finally ended Elias' night with another double in the seventh by Collin Cowgill, who wound up scoring on a Trout sacrifice fly off reliever Dominic Leone.
Cron greeted reliever Tom Wilhelmsen with a leadoff homer in the eighth to increase the Angels lead to 6-3.
Cano's RBI single in the ninth against closer Ernesto Frieri narrowed the final margin and Seattle had runners on first and third when Kyle Seager flew out to center for the final out.