Luke Hochevar did his part with seven strong innings. It was the Kansas City Royals' offense that came up short.

Casey Kotchman led off the ninth inning with a home run to lift the Tampa Bay Rays to a 2-1 win over the Royals on Monday night.

Hochevar allowed one run and five hits, keeping Tampa Bay off-balance for most of the game. The right-hander, who had won his previous three starts, had seven strikeouts and two walks.

"I went out and tried to execute quality pitches," Hochevar said. "We played quality defense again tonight."

Kotchman drove the first pitch from Blake Wood (5-1) over the center field fence. He also knocked in the other Tampa Bay run with a run-scoring single that tied it in the seventh.

"I thought it was going to be caught," Kotchman said of his third homer over the last six games.

Rays rookie Jeremy Hellickson, 3-0 in four starts during July, gave up one run and six hits in 7 1-3 innings. He struck out seven and walked three.

"It was a great game," Kansas City manager Ned Yost said. "There was outstanding pitching from both starters. Hochevar was spectacular and Hellickson was spectacular."

Eric Hosmer put the Royals ahead 1-0 on a first-inning RBI single. Alex Gordon, who had been hitless in his first 37 at-bats at Tropicana Field, hit a leadoff double and later scored on Hosmer's opposite-field hit to left.

Kansas City had a runner in scoring position in four of the first six innings, but went 2 for 10 in those situations. The Royals also failed to take advantage after getting two on with one out during the eighth.

"Hellickson's change up was as good as we've seen all year long," Yost said. "He had great arm speed and we just never picked it up."

Rays closer Kyle Farnsworth (4-1) pitched a perfect ninth to earn the win.

Tampa Bay tied it at 1 in the seventh when Ben Zobrist drew a one-out walk, went to second on a wild pitch and scored on Kotchman's single.

Tampa Bay had two on and one out in the second, but failed to score when Matt Joyce and Robinson Chirinos both struck out.

Hochevar induced double-play grounders in both the fourth and fifth innings.

"He threw well," Tampa Bay manager Joe Maddon said. "He had everything going."

Kansas City center fielder Melky Cabrera was in the lineup after not starting Sunday's game because of a sprained left ankle. He went 2 for 4, including a double, and has 47 multihit games this year.

Notes: Tampa Bay RHP James Shields (10-9), Tuesday's scheduled starter, has seven complete games in 23 starts this season. "That was one of my main goals this year, throw some complete games," Shields said. "They're all in the first half so far, so I'm hoping to get a couple more in the second half." ... Kansas City LHP Jeff Francis (4-11) will be making his first career appearance at Tropicana Field in his start Tuesday. ... Yost said C Matt Treanor (concussion) is making progress, but will likely be out at least a few more days. ... Kansas City has played four straight one-run games, losing three of them. ... Hochevar and Hellickson combined for 13 strikeouts through three innings.