DENVER -- Omar Infante had three doubles and drove in four runs to help the streaking Kansas City Royals beat the Colorado Rockies 7-4 on Tuesday night.
James Shields pitched six solid innings to get the win for the Royals, who have now won 21 of 26 after getting 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.
Adam Ottavino came on and gave up consecutive doubles to Infante and Salvador Perez to give the Royals a 4-2 lead.
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.
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.
Drew 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.
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.
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 a quarter of Colorado's wins this season.