They scored four runs in the eighth inning and one in the ninth before dropping a 9-7 decision in the opener of a three-game series before 23,537.
The Mariners had the tying runs on base with one out in the ninth before Ken Griffey Jr. flied out to center field and Franklin Gutierrez grounded out.
The comeback started in the sixth inning, when Griffey hit his eighth home run of the season, the 406th of his career as a Mariner, the 619th overall and, fittingly, the 5,000th in franchise history.
"He's done a lot of special things for this organization and it's nice to have," manager Don Wakamatsu said. "What's important for us is that he's swinging the bat extremely well over the past week or so. He hit the pinch-hit home run [Sunday] and hit the home run tonight. His swing looks a little bit better."
Griffey said the pitch that got him in the ninth inning "was a backup curveball."
A four-run outburst in eighth inning, triggered by first baseman Russell Branyan's 17th home run of the season, a two-run blast to right field, caused some anxious moments in the visitors' dugout. The uprising also included a walk to Griffey, back-to-back singles by Gutierrez and Wladimir Balentien, and pinch-hitter Mike Carp's sacrifice fly.
The loss snapped the Mariners' winning streak at three games and kept them 2 1/2 games behind the first-place Rangers and Angels in the AL West, though it's probably too early to be scoreboard-watching.
Besides, Griffey-watching has been entertaining in itself.
The veteran slugger gave the home crowd another reason to cheer him when he sent a Chad Gaudin pitch into the right-center field seats with two outs and none on in the sixth inning.
But the poke could not overcome a shaky start from Olson, who surrendered a two-run home run to Adrian Gonzalez in the fourth inning, two more runs in the fifth and two in the sixth.
Right-handed reliever Roy Corcoran replaced Olson two batters into the inning and wobbled, throwing eight consecutive pitches out of the strike zone, forcing in a run. Three singles and sacrifice fly produced two more runs and an eight-run San Diego lead.
The Mariners pitchers and catchers had their usual meeting before the game to go over the opposing hitters and, just like last week in San Diego, stressed the importance of not letting Gonzalez beat them.
He is the only Padres player with more than nine home runs and he hit his 23rd of the season in the series finale against the Mariners last Sunday in San Diego's extra-inning victory.
His 24th of the season came in the fourth inning on Tuesday night.
"I tried to throw a slide-step fastball away, but got it up," Olson explained. "I need to bare down more and make a good pitch right there. He's definitely a great hitter, one of the better ones in the league, and did a good job of hitting it.
"You just can't afford to make a mistake like that."
"The little things we talked about are the high pitch to Gonzalez and controlling the running game," Wakamatsu said. "Those are the little things that end up costing a guy. Again, he's got good stuff and those are the things that he's going to have to continue to get better at this level."
While the sixth inning put the Mariners in an eight-run hole, the second inning might have been just as frustrating.
The inning looked promising when consecutive singles by Griffey, Gutierrez and Balentien loaded the bases with nobody out.
Rob Johnson struck out on a sweeping slider that was way outside.
Yuniesky Betancourt struck out on a sweeping slider that was way outside.
Finally, on a full-pitch count pitch, Ronny Cedeno watched a down-and-away fastball miss the strike zone, scoring Griffey with the first run of the game.
That was the extent of Seattle's offense against Gaudin, who tied his single-game high with 11 strikeouts. It also was the first time this season that the Mariners struck out at least 10 times in a game.
"The thing for me was his breaking ball," Wakamatsu said. "I think he had an extremely good breaking ball and kept guys off balance."
Branyan, who struck out three times against Gaudin, agreed.
"He kept the ball down and we chased a lot of breaking balls out of the zone," Branyan said. "I don't know if he was that good or we were that anxious."
The Mariners played the final two innings without third baseman Adrian Beltre, who went 0-for-3 and was replaced by a pinch-hitter in the eighth inning.
"I saw something in his swing," Wakamatsu said. "He was still favoring his [left] shoulder a little bit, and I wanted to take him out in that situation."
The three-game series continues on Wednesday night with or without Beltre in the lineup.