It felt like time was running out on Max Kepler's tenure with the Twins about a month ago. He was benched against lefthanded pitching. He was booed as his batting average dipped below .190. There were daily calls on social media about moving on from him.

Kepler, one month later, is rewarding the franchise's faith in him.

He staked the Twins to a four-run lead Tuesday with a pair of two-out hits, including a three-run homer in the third inning, during a 9-3 victory against the Royals at Target Field. Kepler has eight hits in his past four starts and he's batting .304 over his past 61 plate appearances.

"That's what he does," Byron Buxton said. "As long as he stays positive and stays within himself, that's the Kep we know."

Royals starter Zack Greinke opted to challenge the lefty-hitting Kepler with first base open and two outs in the third inning, with righthanded Jose Miranda behind him, despite falling behind in a 3-1 count. Kepler, looking for pitches on the outer part of the plate, was way ahead of an 81-mph slider that he hooked foul. The next pitch was an elevated sinker, on the outside corner, and Kepler hammered it over the center field wall.

It was the 141st career homer for Kepler, tying him with Michael Cuddyer for 13th place on the Twins' all-time homer list.

"It feels like we're moving as a unit more and feeding off each other's success," Kepler said. "I see one guy get a knock, another guy steal a base and it riles me up, gets me going. I think in the past it might have felt a little disconnected or people were out to get more individual accomplishments done. Now, it feels like we're really rooting for each other."

For as much as the Twins have talked about improving as an offense, the third inning was a situation in which they needed to capitalize. Carlos Correa and Donovan Solano opened the frame with back-to-back hits — Correa's single was the 1,000th hit of his career — putting two runners in scoring position with no outs. Buxton lined out to third base and Alex Kirilloff couldn't drive in a run with a groundout.

That brought up Kepler, who had hit an RBI opposite-field single in the first inning.

"When [Kepler] is at his best, he can use the whole field really well," Twins manager Rocco Baldelli said. "We got a chance to see some of the different things he can do if he starts locking in on this sort of approach. There is no limit on what we could see from him."

Solano and Buxton hit back-to-back homers in the fifth inning off Greinke, who exited in the sixth inning with right shoulder discomfort. Solano was still working his way through the dugout in his "Land of 10,000 Rakes" vest when he saw Buxton launch the next pitch into the left field seats. Solano immediately took off the vest and ran to the other side of the dugout, so he could prepare to hand it to his teammate.

The Twins had six straight batters reach base with two outs in the seventh inning, which included a two-run single through the infield from Kirilloff.

"We've been seeing a lot of pitches," Kepler said. "Sometimes we don't get the result, but it really hacks on a pitcher when you're seeing five-plus pitches each batter."

Kenta Maeda, buoyed by early run support, completed a season-high seven innings with nine strikeouts. He surrendered a two-run homer to Bobby Witt Jr. in the fourth inning when he was pitching with a four-run lead but otherwise didn't allow a runner to reach second base.

Maeda, who had excellent command of his splitter and slider, retired his final eight hitters. When he struck out his last batter, he let out a yell as he jumped off the mound. It was his first seven-inning start since July 22, 2021.

"I had time to look over my mechanics while I was on the [injured list]," Maeda said through interpreter Dai Sekizaki. "Now I can concentrate on each hitter I'm facing. I can attack with confidence and not have to worry about the mechanics. That's huge."

The Twins have an 8-1 record against the Royals this season.