KANSAS CITY, Mo. -- Jonathan Heasley pitched six innings of two-hit ball, Edward Oliveras and Drew Waters homered, and the Kansas City Royals beat the Minnesota Twins 4-1 on Thursday to complete their three-game series sweep.
Salvador Perez also drove in a run for Kansas City, extending his streak to seven straight games with an RBI, and Brad Keller finished off three innings of no-hit ball by the bullpen for his first career save.
"Much better version of baseball," said Royals manager Mike Matheny, who celebrated his 52nd birthday in fine fashion Thursday.
"The aim is always to win, but you put a couple of wins together against a team that you haven't had success against and you see the confidence starting to swell."
The first home sweep of at least three games by the Royals since July 2021 also probably ended the fading playoff hopes of the Twins, who two weeks ago were in the midst of an AL Central race but lost eight of nine on their road trip.
"I mean, to be very frank about it, disappointing and about as low on the scale as you can imagine," Twins manager Rocco Baldelli said. "The baserunners just weren't there for us. The opportunities weren't there."
Minnesota rookie Josh Winder (4-5) allowed three runs and six hits in six innings. Caleb Hamilton drove in the only run for the Twins, who limp home to wrap up the season having lost 17 of their last 20 road games.
"You have to continue to play the same way. You have to continue to fight the same way," Baldelli said.
Heasley (4-8) also was dominant in his previous start in Boston, allowing two hits over 6 2/3 shutout innings, and the 25-year-old picked up where he left off against Minnesota. Heasley retired his first 10 batters, striking out four of the first five, and followed a base hit by Carlos Correa by retiring the next two to end the inning.
"I thought he really built off what he did the last time," Matheny said. "I do believe that he's found something."
Correa thought he had given the Twins the lead in the first, when he drove a pitch into the right-field seats. But umpire Manny Gonzalez ruled that the ball skirted the pole foul and there was not enough evidence to overrule his call.
The Royals took the lead in the third when Bobby Witt Jr. singled, stole second and scored on Perez's shattered-bat single, then made it 2-0 in the fourth when Oliveras drove a 3-2 pitch into the left-field seats.
Waters added his no-doubt shot leading off the fifth, and Nate Eaton drove in an insurance run in the eighth.
MJ Melendez, who homered in each of the previous two games, nearly joined the Royals' home run party twice. He drove a pitch to the center-field warning track leading off the game and another to the wall in right in the third.
"He was so baffled both times," Matheny said. "He was certain, as we all were, that both of those balls were gone."
The first-inning double by Witt was his 55th extra-base hit this season, matching Alex Gordon for the most by a first-year player in team history. Witt also stole his 28th base, breaking a tie with Carlos Beltran for third among Royals rookies.
Perez played his 1,246th game on Thursday, passing Alcides Escobar and Fred Patek for eighth in Royals history.
After their disastrous trip, the Twins are headed home for three games against Angels and three against the White Sox to wrap the regular season. They have not announced a starter for the opener against Los Angeles on Friday night.
The Royals conclude their final homestand with three games against Seattle before heading to Cleveland for six to wrap up the season. They also have not announced a starter for Friday night's game against the Mariners.
for more features.