BALTIMORE -- There won't be too many games in which James Shields throws seven innings of three-hit ball and is upstaged by a teammate.
This was one of them.
Shields (3-2) allowed two runs, struck out six and walked two in winning his third straight start. The right-hander gave up only an infield hit in the first five innings and improved to 10-7 lifetime against Baltimore, including 7-2 at Camden Yards.
Shields was more impressed with Infante's performance, which included a fine defensive play at second base against Baltimore leadoff hitter Jemile Weeks.
"Omar, definitely the player of the game," Shields said. "It all started with that first play he made barehanded. He had a great day today. Definitely carried our team."
Infante hit a run-scoring groundout in the first inning, a sacrifice fly in the third, a two-run double in the fifth and a two-run shot in the seventh. He entered with one home run and 11 RBIs in 21 games.
"It was a great day for me," Infante said. "I'm happy because that has not happened too many times for a player. It was a great day for the team. I've been working hard in the cage. The last couple of days I hit a lot of fly balls. I don't like that; I want to drive the ball."
The last time Infante had six RBI was last Sept. 13 with the Tigers against Kansas City. The starter for the Royals that day was .... James Shields.
"I'm glad he's on my team now," Shields said.
Nori Aoki scored three runs for the Royals, who took two of three from Baltimore to conclude a 3-4 road trip that began in Cleveland. Kansas City is 12-0 when scoring at least four runs and 0-12 when scoring three runs or fewer.
"I take it we need to score four runs. We're trying to do it more," manager Ned Yost said. "It's just a testament to how good our pitching is, how good our bullpen is. How good our starting pitchers are, how consistent they are that we could have that kind of record."
Miguel Gonzalez (1-2) gave up four runs, three earned, and six hits in six innings.
"Deserved a better fate," Orioles manager Buck Showalter said.
The Orioles quickly got a hint of what kind of day it was going to be when Aoki, leading off the first, hit a fly to center that popped out Adam Jones' glove for a three-base error. Infante followed with a grounder to shortstop that put the Royals ahead for good.
"Missed it," Jones acknowledged.
It wasn't the Orioles' only mistake.
"We made a couple of good decisions with pitchouts (but) we weren't able to execute that," Showalter said. "Those are two free outs. Then obviously, Adam's one of the best center fielders in the game. So I'm not going to lament that at all. He's been a rock for us out there. You spot them, give them those type of things that they don't earn, with Shields on the mound, that's not a good combination."
Baltimore fell to 0-7 in games it makes an error. The Orioles are 12-5 without committing an error.
Baltimore closed to 4-2 in the sixth when Jemile Weeks singled and Cruz homered to center, but Kansas City's four-run seventh against reliever Evan Meek turned the game into a blowout. After Infante connected, Alex Gordon doubled in two runs for an 8-2 lead.
"The flood gates opened," Yost said. "That broke the game open at that point."
- Orioles LF David Lough made a fine diving catch in the eighth inning to rob Dyson of a hit.
- Cruz has 25 RBI this month. The club record for April is 31, by Miguel Tejada in 2005.
- Kansas City went 2 for 11 with runners in scoring position. Baltimore was 0 for 2.
- Dyson was 5 for 5 lifetime against Gonzalez before flying out in the fifth.
- Baltimore's Nick Markakis got his 1,400th career hit, a single in the ninth inning.