Danny Duffy was not pleased with his bullpen warmup. Once the game started he had no-hit stuff.

Duffy and four relievers combined on a two-hitter, helping the Kansas City Royals hold off the Colorado Rockies 3-2 on Tuesday night.

Duffy took a no-hitter into the sixth inning and retired the first two batters before walking DJ LeMahieu and allowing a homer to Nolan Arenado. The Rockies star third baseman squared up a 1-1 pitch and hit it out for his 28th home run.

"Sometimes when the bullpen is bad, it translates into a really good game," Duffy said. "I wasn't really getting extension very well in the bullpen. I took it right out to the game and sure enough it was pretty solid."

Duffy (8-8), who was 0-2 with a 6.35 ERA in his first three starts in August, was removed after six innings and 88 pitches. He walked three and struck out seven. Duffy walked Arenado in the first and Trevor Story in the fifth for the only other baserunners he permitted.

"His changeup was actually really good," Arenado said of Duffy. "He got ahead with his off-speed and threw that fastball in once in a while. He just threw everything for a strike and it looked like he bounced it when he wanted to. He was really good today."

Duffy knew he had a no-hitter in place after five innings.

"I knew there was a zero on the board, but I'm not worried about that," Duffy said of throwing a no-hitter. "As long as we come out with a win, I'm good. I think my pitch count might have been too high to keep that thing carrying on, but you never know what could have happened."

Mike Minor replaced Duffy and retired all five batters he faced, striking out three. Peter Moylan got LeMahieu on a grounder to Whit Merrifield to end the eighth.

Kelvin Herrera gave up a triple to Jonathan Lucroy with two outs and walked Carlos Gonzalez and Gerardo Parra. Herrera left with right forearm tightness and a 2-0 count on Pat Valaika. Left-hander Scott Alexander replaced Herrera and retired Valaika on a grounder to shortstop Alcides Escobar. Alexander picked up his first career save on two pitches.

"I didn't want to shy away from the opportunity of the situation," Alexander said. "I just wanted to be aggressive and attack the zone."

Royals manager Ned Yost said they don't know the extent of Herrera's injury until he is checked out further.

"We had a chance at the end, even though we didn't get a lot going on all night, obviously with only a couple of hits and a few walks," Rockies manager Buddy Black said. "But, we had the go-ahead run at second base there in the ninth. Our guys fought back hard to get in it against a great closer. We just didn't get the knock at the end."

Salvador Perez, who had not played since Aug. 4 because of a strain on the right side of his chest, had two hits, including an RBI double in the Royals' two-run fourth inning.

Jon Gray (5-3) gave up three runs, two earned, and six hits over 6 2/3 innings, striking out six and walking one. He dropped to 4-12 in 27 career road starts.


Yost was among the millions watching the eclipse on the Royals' day off. "I'm sure I was a sight to see," Yost said. "I was in my parking lot with my tailgate down just laying in the back of my truck watching it. It was pretty cool. I enjoyed it."


Royals: The Royals went 6-9 while Perez was out. C Cam Gallagher was optioned to Triple-A Omaha. ... The Royals transferred RHP Miguel Almonte (rotator cuff strain) to the 60-day disabled list.


Royals: RHP Ian Kennedy will try to break a franchise-record 15-game home winless drought. He has not won at Kauffman Stadium since Aug. 20, 2016.