Mills, 28, struck out five while walking three.
Asked in the postgame interview on the Marquee Sports Network how he felt, Mills responded: "I have no idea. It hasn't really hit me yet. I didn't really know how to celebrate. Just something that came together today."
The Brewers never got close to a hit in the final innings as Mills threw a career-high 114 pitches in just his 15th career big league start. He induced a popup by Jacob Nottingham and then struck out Tyrone Taylor for the first two outs of the ninth inning before getting Jace Peterson to ground out to short. Mills said he heard shortstop Javy Baez scream in elation even before he threw the ball to first.
"I just wanted the ball hit to me," Baez said afterward. "This is something we'll be part of for life. Like a championship type thing. No one can take it from you. I was happy to be part of it."
Mills said his curveball was his best pitch on the day. He often set up hitters with a first-pitch curve for a strike. The Brewers actually made some decent contact but finished 0-for-11 on hard-hit balls. That ties for the most hard-hit balls in a game without a hit on those batted balls since Statcast was introduced in 2015.
Meanwhile, manager David Ross became the 11th person to catch and manage a no-hitter. He was behind the plate for former Cub Jake Arrieta's no-hitter in 2016. He said it was different being the manager as he's watching for signs of trouble and keeping track of pitch counts.
"When I was catching, I felt like I was just along for the ride," Ross said.
Mills had to wait in the top of the ninth as the Brewers used shortstop Orlando Arcia as a pitcher and the Cubs tacked on two more runs against pitches topping out in the 50s.
Mills said he was "just trying to calm down and relax and make it seem like the same inning every day."
Mills was a walk-on at Tennessee-Martin and had been cut by the Royals. He never has had a complete game in the big leagues.
He was asked how he would respond if someone told him in college that he would end up throwing a no-hitter in the big leagues.
"I definitely would have told them they were crazy. ... They gave me a chance there, and other teams have given me a chance," he said. "And I'm just going to try to keep making them right."
Mills' no-no was the franchise's 16th no-hitter and the first since Arrieta in 2016. His five swings and misses generated match Dallas Braden's five in his 2010 perfect game for the fewest in a solo no-hitter over the past 30 years.
Chicago has cornered the market on no-hitters. Lucas Giolito of the White Sox threw the first one of the season Aug. 25.
"At a young age, it was just 'I wanted to pitch in the big leagues,'" Mills said. "I don't think you ever think about no-hitters or things like that. It's something I never would have imagined in my life."