Reliever Aaron Crow had two outs with Franklin Gutierrez, who walked, on first base. Morales drove a 1-2 pitch over the center-field wall for his 18th homer.
What really aggravated Crow was that, after getting ahead of Gutierrez with a 1-2 count, he walked him.
"The home run was what lost the game," Crow said, "but 1-2 in that situation, you've got to put that guy away and if he gets out, then Morales doesn't even get up so you don't even have to worry about that. So it's even more frustrating."
Crow tried to throw his last pitch to Morales low-and-away but his 95 mph fastball was up and over the plate -- a bad place for Crow, a good place for Morales.
"He hit that one really good. That's the best ball he has hit in awhile," Mariners manager Eric Wedge said. "He needed that, and we needed that."
The loss was just the third for the Royals in their last 11 games as they strive to stay close in the American League Wild Card race.
But with the Rays' 3-1 win over the Angels, the Royals slipped to 5 1/2 games behind in the chase for a Wild Card spot.
Offensively, the Royals had a very odd evening. All four of their runs and all four of their hits came in the fourth inning. It was a four-for-all. But before and after, nothing.
The Mariners made short work of Royals right-hander Ervin Santana -- in fact, the 3 1/3 innings was the shortest outing of his Kansas City year. It wasn't his worst, though. He was charged with four runs on seven hits and three walks without a strikeout, only the fifth time that's happened in his career.
"I didn't have my best stuff tonight, but I'll just get it next time," Santana said. "I'm not going to give up. I'm going to keep pitching the way I've been pitching the whole year."
Mike Zunino opened the Mariners' third with a single, Nick Franklin doubled and, in short order, both of them scored.
Santana got just one out in the messy fourth inning which started with Raul Ibanez's double and included a couple of walks and Franklin's RBI single.
There were moments of confusion in the inning when it appeared that catcher Salvador Perez had thrown out Dustin Ackley stealing. But home-plate umpire Gary Cederstrom called ball four on Zunino and told manager Ned Yost he'd also called time out so it didn't matter if Ackley overslid the bag on the play and was tagged.
"I didn't see him call time out, hence the confusion," Yost said. "I thought it was a strike to make it 3-2 and the runner out, and the umpire thought [the pitch] was outside. They normally win those arguments."
Anyway, that concluded Santana's outing and Wade Davis was summoned for his first bullpen appearance after 24 starts. Davis got the two outs but, in the process, threw a wild pitch that allowed a fourth run to score.
Right-hander Taijuan Walker, the Mariners' barely 21-year-old rookie, zipped through the first three innings of his second Major League start without allowing a hit. And he extended the scoreless streak of his very brief career to eight innings.
But in the fourth inning, the Royals welcomed him to the big leagues with a four-run outburst to tie the score. Walker issued a walk to Emilio Bonifacio to start things, Eric Hosmer singled and so did Billy Butler for the first run.
After Mike Moustakas' deep flyout moved Hosmer to third, Perez's sacrifice fly brought him home. David Lough hit a line-hugging double and Butler chugged to third. Jarrod Dyson bounced a single up the middle to score both runners and it was 4-4.
"We were looking for the big inning after they scored four but after we tied it up, we were just trying to scratch out one because our bullpen is so good that we can lean on them a lot," Dyson said. "Unfortunately, we didn't get it done."
Walker, who is ranked No. 4 among MLB.com's Top 100 prospects, rebounded by working a perfect fifth and then was taken out.
"He was pretty good. He was nice and easy with his delivery and everything. The ball kind of jumped on you a little bit," Dyson said. "I thought he tried to tone it down on the speed guys - he wasn't overpowering us, but I guess he didn't want to fall behind and walk us. But for the power guys, he was coming after them 96, 97 [mph]. He's going to be a great kid down the road."
The Royals' bullpen, expanded with September callups, was thrown into full service. Yost used seven of his 11 available relievers.
But it was the Mariners' three relievers - Carter Capps, Lucas Luetge and Danny Farquhar - who prevailed in the end. They combined for four scoreless, hitless innings with just one baserunner.
Hosmer brought the crowd of 13,621 to its feet with two outs in the eighth inning by launching a drive that Gutierrez caught near the right-field wall.
"We just didn't get that one big hit," Hosmer said. "I almost got it, just missed a good pitch from Luetge. I wish I could have that one back. It was a tough game."