MINNEAPOLIS (AP) — Minnesota rookie Joe Ryan and reliever Jovani Moran combined to pitch no-hit ball until Bobby Witt Jr. doubled with one out in the ninth inning as the Twins beat the Kansas City Royals 6-3 on Tuesday night.

Ryan was pulled after seven innings and 106 pitches, four shy of his big league high. There has never been a no-hitter at Target Field and the Royals hadn’t come close to getting one against him.

The crowd of 19,005 booed when Twins manager Rocco Baldelli sent Moran to the mound to start the eighth.

“I’m not worried about that,” Baldelli said . “I want what’s best for this team and I want to go to the playoffs and I want to win games in the playoffs, and that’s the priority for me right now.”

Ryan tried to plead his case.

“He said, ‘Listen, I’ve thrown like 156 pitches in a game,’ which is fantastical, but I think true,” Baldelli said. “But all that said, it doesn’t really affect what goes on here and the fact that we need him to go pitch against the Guardians later on this week.”

In fact, when he was a senior at Cal State Stanislaus, Ryan did throw 142 pitches in a game against Cal Poly Pomona in 2018.

Ryan said he understood Baldelli’s rationale.

“The pitch count obviously comes into play. We’re trying to win some games and I’m throwing in five days again, too,’ Ryan said.

Moran worked a perfect eighth. He struck out Drew Waters to begin the ninth before walking pinch-hitter Hunter Dozier and MJ Melendez.

The Royals hadn’t come close to a hit until Witt lined a 1-2 fastball for a clean drive to deep left for an RBI double, setting off more boos from the fans.

“I wanted to help and be part of that no-hitter, but that’s part of the game,” Moran said. “And of course I’m going to get mad because I wanted to do my best and get that out, but it happens.”

Sebastian Rivero followed with an infield hit that drove in another run and Vinnie Pasquantino had a sacrifice fly.

The Twins’ last no-hitter was by Francisco Liriano against the White Sox on May 3, 2011 in Chicago.

Carlos Correa, Jose Miranda and Gio Urshela hit home runs as the Twins snapped a three-game skid. They remained five games behind Cleveland in the AL Central.

Ryan (11-8) struck out nine, walked two and set down his last 12 batters. He has never gone past seven innings in his career and had lost three of his previous four decisions.

The 26-year-old righty had never gone past seven innings in his career. He has a big league high of 110 pitches, done Aug. 9 at the Los Angeles Dodgers.

Ryan was a member of last year’s U.S. Olympic team and was traded to Twins by Rays while he was in Japan.

The Royals avoided being no-hit for the first time since 2008 when Jon Lester shut them down in Boston.

“What’s going on in the dugout is frustration,” Royals manager Mike Matheny said. “Guys realizing that it’s embarrassing when you get no-hit. Going up there fighting through their at-bats, but it’s not something you want to have them finish off.”

“So it was good to put a couple runs on, get some positive things going, and hopefully it’ll translate into more offense tomorrow.”

Kris Bubic (2-12) allowed 10 hits and five runs with six strikeouts in five innings.

TRAINER’S ROOM

Twins: RF Max Kepler (right leg) was not in Tuesday’s lineup but Baldelli was hopeful he’d be available off the bench. Meanwhile, Baldelli said OF-INF Jorge Polanco and RHP Bailey Ober could potentially return this week. The manager also said OF Byron Buxton is slightly behind Polanco.

UP NEXT

Royals: RHP Zack Greinke (4-8) makes his 23rd start of the season on Wednesday night. He is 0-3 against Minnesota this season with a 4.20 ERA in those outings. He’s 0-6 on the road this season.

Twins: RHP Sonny Gray (7-4) will look to go 3-0 against the Royals this season when he takes the mound on Wednesday night.