Shane Bieber pitched three effective innings, Bradley Zimmer drove in three runs and the Cleveland Indians beat the Kansas City Royals 6-1 Thursday night to avoid a three-game sweep.

Bieber allowed one run on four hits, with one strikeout. The reigning AL Cy Young Award winner made his second start since returning from a three-month stay on the injured list.

“This whole process, the end goal has been to try and be as persistent and resilient as possible,” Bieber said. “I want to go out there and do what I love to do, ultimately what I’m paid to do. It was nice to get back out there for a couple of sessions at the end of the year.”

Bieber wanted to head into the offseason feeling positive. He was able to do that, even working his way out of a jam in the second.

Zimmer had an RBI double and a pair of sacrifice flies.

Former Indians star Carlos Santana had two hits, including a single in the second that drove in Andrew Benintendi, who had doubled.

The Indians picked up a pair of unearned runs in the third. Roberto Perez reached on an error by third baseman Adalberto MondesiOscar Mercado had an RBI double and Zimmer had a sacrifice fly.

Cleveland added a run in the sixth off reliever Dylan Coleman, who allowed his first earned run in his fifth major league appearance when Jose Ramirez tripled and Harold Ramirez singled.

Kansas City had a chance to score in the sixth when Perez led off with a double and Benintendi singled. But Perez was thrown out at the plate on a grounder and, after the Royals loaded the bases, Mondesi grounded into an inning-ending double play.

Myles Straw singled in the Cleveland seventh and scored on Zimmer’s double. Harold Ramirez added an RBI single.