DENVER — The Colorado Rockies got the starting pitching performance they needed, it just wasn't enough against the hottest team in baseball.
Rookie Tyler Matzek had his best outing in nearly a month but faltered in the seventh inning. That opened the door for the Kansas City Royals, who scored three times each in the seventh and eighth to beat the Rockies 7-4 on Tuesday night.
Omar Infante had three doubles and drove in four runs for the Royals, who have now won 22 of 27 after getting to Matzek in the seventh.
"He did a nice job tonight, getting deep into the game," Rockies manager Walt Weiss said of Matzek. "So he's making strides. We're seeing him develop in front of our eyes. He's done a nice job this year. He's a guy that's stepped up for us."
He couldn't sustain it, however. Matzek (2-9) came into Tuesday with a 9.60 ERA in August but was having his best start since blanking Pittsburgh over seven innings on July 26 when he ran into trouble with two outs in the seventh. Matzek got the first two outs before allowing a pinch-hit single to Josh Willingham and walking Nori Aoki.
"I know he's trying to play pepper up there," Ottavino said of Infante. "My intent was to throw it really high. I mis-executed it and he slapped it down the line."
"Hasn't had his great command," Weiss said of Brothers. "He's gotten in a lot of deep counts, high pitch counts. Put the first couple guys away real quick and then struggled."
It was the second time in his career Infante has had three doubles in a game. The last time, May 27, 2004, came against the Royals when he was playing for Detroit.
That made a winner of Shields (12-6), who allowed two runs on nine hits and struck out six. He wasn't sharp, allowing base runners in every inning but his last and struck out Drew Stubbs with the bases loaded to end the fourth.
Stubbs and Nolan Arenado each had three hits and a home run for Colorado.
Arenado went deep in the fifth to give Colorado a 2-1 lead and Stubbs hit a two-run homer in the ninth, when the Rockies mounted a rally. Greg Holland came on and threw one pitch to record his 39th save in 40 chances.
"They get a lead after six innings, they pretty much wipe you out," Weiss said. "That's been the formula for them this year. Guys come in throwing in the upper 90s and throwing strikes."
Justin Morneau, back in the lineup after missing two games with a stiff neck, gave Colorado a 1-0 lead with a double-play grounder in the first.
Kansas City tied it in the fourth on Lorenzo Cain's RBI double to.
Rockies OF Corey Dickerson, who was named the NL Player of the Week on Monday, saw his 12-game hitting streak stopped. He had a chance to extend it in the ninth but flew out to left field to end the game.
"I caught it OK but kind of towards the end of my bat and just kind of popped it up instead of driving it," Dickerson said.
Rockies: OF Michael Cuddyer was scratched from the lineup with a sore left hamstring. Manager Walt Weiss said it wasn't a long-term issue, adding that playing a doubleheader Sunday led to the soreness. Cuddyer hit for the cycle in the second game of the Rockies' sweep.
Rockies: Colorado's lone bright spot on the mound, LHP Jorge De La Rosa, will face his former team Wednesday. De La Rosa (12-8) made 33 starts for the Royals in 2006-07 before joining the Rockies. He has accounted for a quarter of Colorado's wins this season.