Try every two years.
The win, which moved Cleveland out of last in the AL Central, left Greinke searching for an answer.
"As soon as I got out of the game, we started getting everybody out, so I must have been doing something wrong," he said.
Greinke (9-14) lasted just 3 2/3 innings in his second-shortest outing of the season. He was charged with seven runs and a season-high 11 hits. The Indians managed three hits after Greinke departed.
The reigning AL Cy Young Award winner was 5-0 with a 2.73 ERA in his previous nine starts against Cleveland, including a 2-0 record with a 3.15 ERA in three outings this season.
Greinke retired six of the first seven hitters Saturday night, including four strikeouts, but the Indians pushed across three runs in the third and four in the fourth.
"It was nice to see," Indians manager Manny Acta said. "He's a tough cookie."
As for Choo, the Royals can be happy that Sunday will be the last time they see him this season. He drove in two runs and is batting .385 (25 for 65) with 20 RBIs in 17 games against Kansas City.
"I usually pitch him pretty good," Greinke said. "Today wasn't much different. He just hit them really good. He's swinging better."
"He continued to show his hot streak against the Royals," Acta said.
Valbuena hit a leadoff double in the third and scored on Luke Carlin's single to center. Following a groundout, Cabrera's single up the middle scored Carlin. Cabrera stole second and scored on Choo's double to left-center, snapping an 0-for-9 skid against Greinke this season.
Matt LaPorta hit an RBI double and scored on a wild pitch in the fourth. Trevor Crowe drove in Valbuena with a bloop hit and Choo added a run-scoring single, chasing Greinke, who dropped to 1-3 with a 6.90 ERA in five September starts.
"It's hard to explain," Royals manager Ned Yost said of Greinke's outing. "He was really good the first two innings and then it was all downhill from there. He just lost it from the third inning on."
Cabrera ran his career average against Greinke to .500 (15 for 30).
"I've tried pretty much everything on him," Greinke said. "He hits everything and even when he doesn't hit it hard, it's a base hit."
Gomez allowed one run and six hits as the Indians moved into fourth place in the division, a half-game ahead of the Royals.
"It feels good to win a game," Gomez said. "I've been trying to take my work in the bullpen into the game. I've been working with my changeup and slider and both worked good tonight."
Kansas City's only run came on Brayan Pena's RBI single in the third.
"It wasn't a good night," Yost said. "It wasn't Zack's night. We struggled to score runs. Quite frankly, we didn't play well."
Yost has made some changes that may last the rest of the season. Mike Aviles will play third base while Wilson Betemit will second base. ... Indians RHP Chris Perez returned to his home in Tampa, Fla., Friday for the birth of his son, Maxwell Alexander. Acta said Perez probably will rejoin the team Monday. ... Indians OF Michael Brantley (tightness in left hamstring) was out of the lineup for the third straight game. Acta expects him to play Sunday.