DENVER -- Ned Yost never has a bad birthday, but a win helps make the occasion much more special.
It also brought a smile to Yost, who turned 60.
"For 35 years I've always thought I've been a winner on every one of my birthdays because I'm with a group of guys I really like and have fun being around," he said. "But when you win the game it makes it that much more sweeter."
The Royals have been celebrating a lot lately. Since dropping two games below .500 on July 21 they have won 22 of 27 to move two games ahead of Detroit in the AL Central.
They even won with ace James Shields not having his best stuff.
"It was a grind day. It was one of those days where I didn't have my good stuff at all," he said. "You're going to go through days like that and you battle through it."
Shields pitched six solid innings to get the win for the Royals, who are a major league best 15-4 in interleague play.
It took a while but they did get to Colorado rookie Tyler Matzek in the seventh.
Matzek (2-9) came into Tuesday with a 9.60 ERA in August but was having his best outing 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.
"It was a great at-bat. Ottavino was throwing hard, good slider," Billy Butler said. "It woke me up. He had good stuff and Omar stepped up."
The Royals scored three more runs in the eighth off Colorado's bullpen. Infante had a two-run double with the bases loaded.
It was the second time in his career he has had three doubles in a game. The last time, May 27, 2004, came against the Royals when he was playing for Detroit.
"Omar's swing is so simple, it's not a lot of moving parts," Yost said. "He can get on a streak in a hurry."
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," Rockies manager Walt 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.
Yost was starting his postgame news conference when first base coach Rusty Kuntz interrupted to present the manager with a cake. Kuntz then sang "Happy Birthday" and gave Yost a hug before leaving his office.
Infante wasn't the only Royals player to record a two-bagger. Kansas City had six doubles for the first time since July 29, 2011, at Cleveland.
Royals: Perez returned to the lineup after being pulled from Monday's game with a sore knee.
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.
Royals: Red-hot Kansas City will go for a season sweep of the Rockies with lefty Danny Duffy on the mound. Duffy (8-10) has won a career-high three straight starts.
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 nearly a quarter of Colorado's 49 wins this season.