James Shields has even surprised himself about going the distance this season.

Shields threw a six-hitter for his major league-best eighth complete game, Evan Longoria homered and had four RBIs, and the Tampa Bay Rays beat the Kansas City Royals 4-0 on Tuesday night.

"I didn't think I was going to get one complete game," Shields said. "I hadn't had one since 2008, so I was just hoping for one this year. Fortunately, for me, it's been a lot. I'm really, really happy with the way I've pitched this year and hopefully we can get a couple more here."

Shields (11-9) also has four shutouts this year. The right-hander is 6-2 in nine career starts against Kansas City.

"James Shields, wow, pretty good stuff," Rays manager Joe Maddon said. "Very sharp. He had a great look. Nice tempo and finished it off strongly."

Longoria drove in two runs on a single during the first and hit a two-run homer in the sixth. He has driven in 12 runs over his last 12 games despite having just nine hits during the stretch.

"Longo getting back on track always makes the Rays a better ballclub," Maddon said.

Longoria has been bothered by a sore spot on his left foot this season, but Maddon said the ailment is much better.

"It seems to be behind him," Maddon said. "He looks pretty normal now."

Jeff Francis (4-12) gave up four runs and five hits over seven innings for the Royals. The left-hander retired 15 in a row after allowing the first three batters to reach base in the first.

"I thought Jeff pitched a great game," Royals right fielder Jeff Francoeur said.

The game had a three-man umpiring crew because crew chief Derryl Cousins was unavailble due to a personal matter. The time of the contest was 1 hour, 53 minutes — the fastest nine-inning game in Tampa Bay history.

Longoria put the Rays ahead 2-0 with his two-run single in the first. Desmond Jennings was hit by a pitch and Johnny Damon had a bunt single, and both later scored on Longoria's hit after a double steal.

Shields struck out eight and walked three.

Kansas City had two on and no outs in the third, but failed to score when Alcides Escobar popped out on a sacrifice bunt attempt and Alex Gordon grounded into a double play.

Melky Cabrera was caught stealing at second in the fourth after Billy Butler struck out looking on a 3-2 pitch. The next batter, Eric Hosmer, walked and became the first player to steal a base this season with Shields pitching when he stole second.

Kansas City has scored just one run in losing the first two games of the four-game series. The Royals were hitless in five at-bats with runners in scoring position Tuesday and are 2 for 17 over the last two games.

"We had a couple chances to score, but guys like Shields, you get a guy on third and that's when they become their best," Francoeur said.

Damon, who entered mired in a 2-for-31 slide, had two hits in four at-bats. The designated hitter, with 2,682 career hits, moved within one of tying George Davis for 65th place on the all-time list.

Notes: Shields was the fifth consecutive starting pitcher with double-digit wins this season that the Royals have faced. ... Kansas City RHP Felipe Paulino (1-4), Wednesday's scheduled starter, has 49 strikeouts and 11 walks — two intentional — in his last seven outings. ... Tampa Bay RHP Wade Davis (8-7) will look to improve on his early-inning struggles in his start on Wednesday. "That's going to be my main goal, to go out and get through it a lot better this time," Davis said. He has overcome bad first innings in his previous two starts to pitch six and 7 2-3 innings, respectively.