Billy Butler went deep twice and Alex Gordon also connected for Kansas City, which has won seven of 10. Butler hit a two-run shot in the first and a solo drive in the eighth, giving him five long balls in a four-game homer streak.
"We're swinging the bats pretty good right now," Royals manager Ned Yost said. "Francis threw the ball great."
Butler came to the plate right after Cabrera's grand slam in the fourth, and Cleveland starter Carlos Carrasco promptly threw one at his head on the first pitch. Players from both dugouts and bullpens came on the field, and Carrasco was ejected.
"That's not professional," Butler said. "I understand the game. You don't go above the shoulders. I knew there was the possibility that I would get hit, but that's too high. You're never supposed to throw at somebody's head."
Several Royals players gestured and yelled at Carrasco as he was walking to Cleveland's dugout. Carrasco shouted back before leaving the field.
Right fielder Jeff Francoeur, who was hit in the face while playing in the minors, was the most demonstrative Royals player.
"I was yelling to hit him in the leg or hit him in the side," Francoeur said. "You don't throw at someone's head. You could really hurt somebody. That's just wrong. That's why I like the National League because that stuff doesn't happen. You have to take a bat up there."
Indians manager Manny Acta also was unhappy with Carrasco.
"We don't condone throwing at people's heads," Acta said. "He was talked to by (pitching coach Tim Belcher). That's a dangerous situation."
Carrasco admitted he was upset that Cabrera stood at home plate and admired his 13th homer, but denied the pitch to Butler was intentional.
"I didn't throw at anybody, the baseball just ran away," he said. "I know it looked bad after a home run, but there is nothing I can do right there."
Carrasco was replaced by Chad Durbin, who threw a high-and-inside pitch to Cabrera with the bases loaded in the fifth. Cabrera hit the dirt and glared at Durbin, but didn't make a move toward the mound.
Francis (4-11) won for the first time since June 10. He allowed four hits, struck out six and walked one.
"It was the offense's night, for sure" Francis said. "It's a different game when you get a big lead in the fourth. They didn't get good wood on the mistakes I did make."
The Indians, who were no-hit by Angels right-hander Ervin Santana on Thursday, have lost seven of eight, managing just 13 runs during the slide. Right fielder Kosuke Fukudome, acquired from the Chicago Cubs on Thursday, went 0 for 4 in his Indians debut.
Carrasco (8-9) lost his fifth straight start and has allowed seven home runs in his losing streak. The right-hander lost for the sixth time in his last seven decisions overall.
Royals rookie 3B Eric Hosmer extended his hitting streak to 10 games with a first-inning double. ... The Royals are 3-2 on their road trip to Boston and Cleveland. ... RHP Alex White (strained finger ligament) is scheduled to begin a rehab assignment at Double-A Akron on Saturday. White started three games for the Indians, but will be used in relief when he returns. ... Acta said OF Shin-Soo Choo (broken left thumb) might start taking batting practice in a week to 10 days. Choo was hit by a pitch on June 24.