WATCH: Fulmer, Ausmus, Avila & Upton after 7-3 win over Royals

The crowd cheered Michael Fulmer and booed the decision to pull him.

That was the only real drama at the end - after the talented right-hander had shut down Kansas City for almost the entire game.

Fulmer came within one out of a shutout, and the Tigers hit three home runs in a 7-3 victory over the Royals on Thursday. A late Kansas City rally cost Fulmer a complete game after he'd faced only one batter above the minimum through eight innings.

"Just one out short," Fulmer said. "It happens. I felt like, stuff was good all game, and then, even in that ninth inning, get two quick outs. Wasn't trying to overdo anything. I felt like they fouled off some great pitches, and ultimately just found holes that one inning."

Fulmer (7-6) appeared headed for his second big league shutout. He was at only 88 pitches after Alex Gordon grounded out for the second out of the ninth, but then Ramon Torres and Jorge Bonifacio singled, and Drew Butera drove them in with a double.

Justin Upton dropped Eric Hosmer's soft liner to left field for an error, allowing another run to come in. By that point, Fulmer was up to 104 pitches, and the crowd booed when manager Brad Ausmus came out and removed him.

"I just felt like the momentum was shifting and I didn't really want to bring it down to the wire where all of a sudden the tying run's at the plate," Ausmus said. "Trust me, I wanted to see Michael Fulmer go nine innings, too, but I also don't want to give the other team any hope."

Justin Wilson struck out Brandon Moss to end it.

Upton, Ian Kinsler and Andrew Romine went deep for the Tigers. Jakob Junis (2-2) allowed a three-run homer to Upton in the first, as well as a solo shot by Kinsler in the third and a two-run drive by Romine in the fourth.

Fulmer retired his first nine hitters. The reigning AL Rookie of the Year allowed seven hits, with seven strikeouts and no walks.

The first four batters reached base off Junis. Upton opened the scoring with his 15th home run of the year. Kinsler made it 4-0 with his ninth.

Romine's drive to right was his third home run of the year, a career high. He hit two in each of the previous three seasons.

J.D. Martinez battled through a 15-pitch at-bat against reliever Kevin McCarthy in the seventh, finally hitting an RBI single to make it 7-0.

"I was just trying to give it to him, like, 'Put it in play,'" McCarthy said. "After a couple, it was like, 'Damn.' I didn't know what else to do."

Junis allowed six runs and seven hits in six innings.

SOLID DEFENSE

Part of the reason Fulmer was able to keep his pitch count down was because the Tigers turned double plays following three of Kansas City's first four hits.

"Middle infield did awesome," Fulmer said. "I try to get them as many groundballs as I can, especially with a guy on first. They all know how to turn it well."

SNAPPED

The Royals lost two of three in this set, failing in their bid for a sixth consecutive series victory.

"We just didn't pitch good today, and matched up against a really, really good pitcher," manager Ned Yost said. "Had the opportunity to win the series, but Fulmer was just too much for us."

TRAINER'S ROOM

Tigers: Gordon hit a single in the sixth that bounced off Fulmer and through the left side of the infield. Detroit's trainer came out to check on Fulmer's right leg, but he was able to stay in the game. ... Martinez appeared to foul a pitch off his right foot during his long at-bat in the seventh. He was removed for a pinch-runner after his single.

UP NEXT

Royals: Kansas City returns home to host Minnesota on Friday night. Royals LHP Jason Vargas (11-3) tries to become the AL's first 12-game winner when he takes on RHP Ervin Santana (10-4).

Tigers: Detroit hosts Cleveland, with RHP Anibal Sanchez (0-0) taking the mound for the Tigers against RHP Josh Tomlin (4-9).