Rodriguez (2-0) threw seven strong innings, firing 24 first-pitch strikes to 32 batters. He walked two and struck out four and prevented the Royals from becoming the first team to go 10-0 since the 1987 Milwaukee Brewers won their opening 13 games.
Rodriguez threw 99 pitches - 73 strikes - before Jose Santiago gave up one hit and struck out one in a scoreless eighth. Danys Baez walked one and struck out two in the ninth as Cleveland snapped a three-game losing streak.
Milton Bradley homered and scored two runs as the Indians pounded out a season-high 13 hits. Bradley, one of the few Indians enjoying a good season at the plate, has hit in each of the team's 11 games.
Kansas City left 12 runners on base and was 1-for-8 with runners in scoring position.
Royals starter Darrell May (0-1) went four innings, allowing three runs and seven hits with one walk and three strikeouts in his first appearance of the season.