Maikel Franco drove in the go-ahead run with a sacrifice fly in the eighth inning and had an RBI single in the ninth as Kansas City beat the Cleveland Indians 8-6 Tuesday night to snap a seven-game losing streak.

Whit Merrifield hit a three-run homer and Cam Gallagher had an RBI double for Kansas City, which had been outscored 51-18 and only held the lead after one inning in losing its first seven games in September.

Adalberto Mondesi led off the eighth with a single off Adam Cimber (0-1) and scored on Franco’s fly to center, putting the Royals up 6-5. Later in the inning, Nicky Lopez was hit by a pitch from Oliver Perez with the bases loaded to score Hunter Dozier.

Franco added a two-out single in the ninth off Adam Plutko to extend Kansas City’s advantage to 8-5.

Greg Holland (3-0) worked two perfect innings, striking out three, for the win. Scott Barlow allowed one run in the ninth before earning his second save.

Carlos SantanaSandy Leon and Francisco Lindor each homered for Cleveland, which had won three in a row.

Indians rookie Triston McKenzie struck out seven and allowed three hits in five innings, leaving with a 5-3 lead. The right-hander is 2-0 with a 2.57 ERA through four starts.