Making his first start of the season, Mills (0-1) allowed two runs and six hits in seven innings, matching a career high.
Mills doesn't throw hard, topping out at 85 mph, but still impressed manager John Farrell.
"He's definitely earned another opportunity, there's no doubt about it," Farrell said. "He did a very good job today.
"In Brad's case, regardless of what the radar gun says, he's got life through the zone," Farrell added. "He's got a quick arm, he's got deception. He's got a well-above average changeup that creates some separation and slows some bats down."
Mills said he enjoyed the duel with Holland, who recorded his third shutout in five starts.
"I like close games," Mills said. "It gets me out there a little quicker. Sometimes it's a little more draining if you're sitting in the dugout for 20 minutes. A competitive game like that, it's a challenge. Unfortunately I came up a little short today. But I like pitching against a tough guy."
Holland (10-4) reached double digits in victories for the first time and improved to 4-0 with a 1.64 ERA since losing to Florida on July 2. The left-hander blanked Oakland on July 7 and followed that with a shutout of Seattle on July 14.
"His stuff was great today," Napoli said. "When he started throwing in the bullpen I knew he had some good stuff and he brought it into the game. He had a good fastball and he mixed in some off-speed when he had to. The ball was moving all over the place."
Holland, who walked one and struck out five, leads the AL with four shutouts this season and is tied with Philadelphia left-hander Cliff Lee for the major league lead. He and catcher Napoli embraced in front of the mound following the final out. Holland threw just 95 pitches, including 69 strikes.
After Moreland homered off Mills in the top of the second, Holland faced his only jam in the bottom half, issuing a two-out walk to Rajai Davis, then throwing the ball away on John McDonald's bunt to put runners at second and third. That's when Rangers manager Ron Washington came to the mound to deliver a short, sharp message.
"I told him how important that inning was," Washington said. "We had just put two runs up there. He got two quick outs and then he walks a guy and didn't make a play that he should make. The last thing we need is for him to let those runs score. Then I left."
Washington didn't have to come back the rest of the day. Moreland struck out J.P. Arencibia looking to end the inning, starting a stretch of 12 consecutive outs. The Blue Jays didn't have another runner reach scoring position.
"It fired me up," Holland said of Washington's pep talk. "I know I'm better than that. I shouldn't have been making those two-out mistakes. Especially after the offense just gave us some run support, I'm supposed to go out there and shut them down. I wasn't doing a very good job that inning."
Washington said if Holland had allowed even one base runner in the ninth, he would have called closer Neftali Feliz in to finish. That wasn't necessary. Colby Rasmus grounded out, Jose Bautista struck out looking and Holland deflected Adam Lind's hard grounder to shortstop, where Omar Quintanilla made the final out.
"From previous seasons he's improved a large amount," Lind said of Holland. "You used to see fastballs and sliders but now he's locating his fastball to both sides of the plate with a slider and curveball."
Napoli singled to begin the second and Moreland followed with a line drive homer to right-center, his 13th. It was Moreland's first career homer off a left-hander.
Napoli made it 3-0 with a solo shot to center in the eighth, his 15th.
Rangers infielder Ian Kinsler snapped an 0 for 20 slump with a leadoff single to left in the fifth. Kinsler had been held hitless in his previous four games.
Blue Jays shortstop Yunel Escobar was ejected in the sixth for arguing a call at first base. Escobar jumped up and down in anger after he was called out on a ground ball up the middle, arguing with umpire Marvin Hudson that Kinsler's throw had pulled Michael Young off the bag.
Hill replaced Escobar and played second base, with McDonald moving from second to shortstop.
Rasmus went 0 for 4 and is 0 for 12 with a walk in three games since being traded to Toronto on Wednesday.
NOTES: Texas OF Nelson Cruz, who left Friday's game with a tight left quadriceps muscle, was held out of the starting lineup. SS Elvis Andrus also didn't start after tweaking his sore right knee Friday. OF Josh Hamilton was held out of the starting lineup but came on defensively in the ninth. ... Lind started at DH and is expected to get the day off Sunday. ... Mills started in place of LHP Jo-Jo Reyes, who was designated for assignment last week.