The Royals (44-44) dropped four straight and are winless in five games this season against the Rangers (44-45), who won their 10th straight over Kansas City dating back to last season.
Napoli's pinch homer with Carlos Gomez aboard in the seventh broke a 3-3 deadlock. Napoli pulled Mike Minor's (5-2) pitch 444 feet out to left.
It was the Rangers' first pinch-hit home run since Leonys Martin did it May 19, 2015, at Boston.
Adrian Beltre helped the Rangers rally from a 3-0 deficit with a three-run blast in the sixth. It was Beltre's 453rd career home run, moving him one past Carl Yastrzemski and into 38th place on the all-time list. That also upped his RBI count to 1,601 and put him within 20 of reaching 3,000 career hits.
The Royals increased their advantage to 3-0 in the fifth when Whit Merrifield doubled down the right-field line and scored on Jorge Bonifacio's single to center. Bonifacio was out at second, trying to stretch his hit into a double. That lead soon evaporated.
Jason Hammel did not allow a hit until one out in the sixth, but he failed to get out of the inning.
Elvis Andrus chopped one off the plate for an infield single for the first Texas hit. Nomar Mazara's fly ball single to shallow left moved Andrus to second before Beltre homered.
After Robinson Chirinos' two-out single on Hammel's 108th pitch, manager Ned Yost went to his bullpen, bringing in left-hander Minor.
Rangers' starter Martin Perez (5-6) threw 89 pitches in seven innings to pick up the victory. Perez allowed three runs on eight hits and is 3-0 in his past four starts.
Matt Bush worked a flawless eighth, while left-hander Alex Caudio got the final three outs for his second save this season.
Eric Hosmer's infield single in the Kansas City sixth extended his hitting streak to 16 games, the longest active streak in the majors. Hosmer was quickly erased when Salvador Perez grounded into his 13th double play, one behind the league-leader.
Hammel held the Rangers hitless for the first five innings, allowing only three baserunners. He walked Beltre to leadoff the second and Carlos Gomez with two out in the fifth.
Hosmer's fielding error put Mazara on base with out in the fourth.
Alcides Escobar extended his hitting streak at home to 11 games with a second-inning home run that clanged off the left-field pole and put the Royals up 2-0. Mike Moustakas, who reached on an infield single, was aboard when Escobar homered on a 2-0 Perez offering.
NOTES: Royals RHP Neftali Feliz went on the paternity list and RHP Miguel Almonte was recalled from Triple-A Omaha to take his bullpen slot. ... Rangers RHP Keone Kela, who is on the disabled list with a stiff shoulder, is back on a throwing program, but Texas manager Jeff Banister said it is doubtful he would be activated for the weekend series with the Royals. ... Royals RHP Nathan Karns has not yet decided whether to have season-ending thoracic outlet syndrome surgery, but acknowledged he is leaning in that direction. ... OF Bubba Starling, who was the Royals' 2011 first-round pick, has been placed on the Triple-A Omaha disabled list with an oblique injury.