Napoli connected off Royals starter Danny Duffy in the sixth inning to snap a 1-1 tie.
The Royals also dropped into the third place behind Cleveland in the American League Central and their record fell to .500 at 48-48. The Indians swept a doubleheader from first-place Detroit, so the Royals are six games behind the Tigers.
Duffy had one out and a 3-1 count on Napoli when the first baseman pulled a drive over the Green Monster in left field and onto the street behind it. That was his 11th of the season.
"Something inside just told me to go after him, so I paid the price," Duffy said.
Duffy threw a fastball that was up and caught too much of the plate.
"I got into a hitter's count, 3-1, just trying to hit something hard from there," Napoli said. "Got a pitch up to handle, then drove it."
Afterward, Duffy wondered why he hadn't just thrown ball four to Napoli.
"I was saying that as I was walking off the mound, but it is what it is. Hindsight's always 20-20," Duffy said.
The Royals had taken a 1-0 in the third inning. Jarrod Dyson led off against right-hander Rubby De La Rosa with a triple that rolled into deep center field. He scored on Omar Infante's sacrifice fly.
"The triple I just battled, battled till I got a pitch I could hit," Dyson said. "I felt out front on it. It could've been a changeup."
Jonny Gomes, whose pinch-hit homer beat the Royals on Friday night, gave them a couple extra chances in this game with his play in left field.
In the fourth inning, while pursuing Mike Moustakas' pop fly, Gomes bumped into shortstop Brock Holt. The ball dropped safely and Gomes was charged with a two-base error. But there were two out and De La Rosa fanned Nori Aoki.
In the fifth inning, Gomes was approaching a pop fly by Infante while Holt drifted into the outfield. Once burned, this time Gomes pulled up short and Holt stopped coming so the ball dropped between them. Infante was credited with a double, but again there were two out and De La Rosa struck out Eric Hosmer.
Earlier, Hosmer extended his hitting streak to 15 games with a first-inning single.
The Red Sox got an unearned run off Duffy in the fourth inning. Napoli singled, Gomes walked and Shane Victorino's rocket grounder went right through shortstop Alcides Escobar's legs for a run-scoring error.
"Shane hit the ball so hard. That ball beat me," Escobar said. "I missed that ball -- that wasn't me. I feel bad about it."
It was a rare sight indeed.
"I can't remember the last time a ball got through Esky's legs and that was a double play ball, and [Duffy] gets out of that unscathed," Yost said.
"I thought Duffy pitched great. He did exactly what I wanted him to do -- he kept us in the game and gave us a chance to win."
But there just weren't enough runs. Duffy has the lowest run support of any of the Royals' starting pitchers, 2.9 a game, but he wouldn't complain.
"Not at all," he said. "I'm the one that went out there and threw a fastball at Napoli's letters, and I'm the one he hit the home run off of. I could've done my job better tonight."
The Royals are just 10-20 in one-run decisions this year after winning 31 of them last year.
"We're just not capitalizing on opportunities and we had a couple of them tonight on misplayed fly balls that we couldn't take advantage of," Yost said.