Duffy goes the distance -- sorta -- but can't quite get it done for Royals

Danny Duffy was decent. Dallas Keuchel was superb.

In a battle of left-handers, Houston's Keuchel bested Kansas City's Duffy as the Royals lost 4-0 to the Astros on Tuesday night. Keuchel spun eight innings of shutout ball to silence Kansas City.

Duffy, meanwhile, delivered his second-longest start of the season by going 6 2/3 innings, giving up four runs on six hits and two walks. He struck out six in his second start back from the 15-day disabled list.

Duffy surrendered a two-run homer to George Springer in the third inning and flung a wild pitch that allowed a run to score in the fourth. He retired the last seven Astros he faced as his pitch count climbed to 97.

The Royals will try to salvage a game in the series finale Wednesday evening. Edinson Volquez matches up with Vince Velasquez.

3 UP

• Cain at the plate. Lorenzo Cain, despite nursing an injured hamstring, went 3 for 4 with two doubles. He was the only Royal with multiple hits and collected nearly half of Kansas City's hits off Keuchel. Cain is now slashing .385/.484/.577 in his last eight games.

• Cain at the hill. Kansas City's center fielder literally went up the hill perched in Minute Maid Park. In the fourth inning, Evan Gattis smoked a ball deep to center field, forcing Cain to battle Tal's Hill, an elevated portion of Houston's field of play.

Cain stumbled going up it and couldn't snag Gattis' drive. Gattis stretched the hit into a triple and scored on a wild Duffy pitch.

• Hochevar goes back-to-back. For the first time this season, right-hander Luke Hochevar pitched on consecutive days. He recorded a perfect eighth inning one night after a spotless seventh.

Earlier this season, Hochevar technically appeared in back-to-back games but failed to throw a pitch one night because of a rain delay. He spent the first month of the season recovering from Tommy John surgery.

3 DOWN

• KC's offense. The Royals were shut out for the sixth time this season -- and second time on the road trip. They have scored just one run in their two games in Houston.

Kansas City has knocked 13 hits and drawn four walks in the past two games but has gone 0 for 12 with runners in scoring position.

Watch the Royals Live pregame and postgame shows before and after every Kansas City Royals game on FOX Sports Kansas City.

• Morales' unlucky double. Kendrys Morales' ground-rule double in the first inning cost the Royals a run. With Cain on first and two outs, Morales dumped a deep fly into the right-field corner. The ball skipped the fence just as Cain hit third base on his way to scoring easily.

He returned to third base and failed to score when Salvador Perez ended the inning by grounding out.

• Eric Hosmer. The Royals' first baseman did not play again Tuesday night, missing his second straight game with a sprained left ring finger. Hosmer is not expected to play Wednesday night.

You can follow Matthew DeFranks on Twitter at @MDeFranks or email him at matthew.defranks@gmail.com.