SEATTLE – Pablo López spun around and clapped once into his glove after he ended the sixth inning with a called third strike.

In López's roller coaster of a season, which he recently described as one step forward and two or three steps back, there was finally some semblance of consistency. After pitching eight scoreless innings at Oakland last weekend, López delivered another quality start to lead the Twins to a 5-1 victory over the Seattle Mariners on Saturday.

Byron Buxton carried the offense with a three-run homer in the sixth inning and an RBI double in the fourth inning.

"I'm extremely happy with the work we've been putting in with so many aspects of pitching," López said. "Not just sequencing, but the way the body is moving and everything. I'm glad to see how it's performing. I'm already thinking how can we replicate it? How can we make it happen again?"

Pitching at T-Mobile Park for the first time since the ninth inning of last year's All-Star Game, López looked like the guy who emerged as the ace of the staff last season. He gave up four hits and one run in six innings while striking out nine.

López changed his sweat-filled uniform after giving up a homer in a 32-pitch third inning — "It doesn't matter where, I just sweat a lot," he said — and he looked unhittable afterward. He retired his final 10 batters while striking out seven of them. There was only one ball that left the infield after the third inning.

Combined with his last start, he has struck out 23 of 49 batters.

"He pitched his best after working his butt off in that [third] inning," Twins manager Rocco Baldelli said. "It shows a lot. That's not easy to do. That doesn't happen in our game most of the time."

López threw 66 pitches after three innings, and maybe that helped his mindset. He couldn't think too far ahead, unsure how deep he would pitch into the game.

"They were fouling off tough pitches, forcing me to be more in the zone," said López, who surrendered a leadoff homer to Mitch Haniger in the third inning on a hanging curveball. "It's one of those innings that after I was able to get through limiting the amount of damage, it also gives me some kind of boost in my confidence. The damage didn't get out of control. The snowball didn't do its thing."

BOXSCORE: Twins 5, Seattle 1

Buxton, given the day off Friday after playing three games in center field on turf, remained red-hot on the road trip. Carlos Correa and Carlos Santana opened the sixth inning with back-to-back singles, aided by a defensive mistake. Mariners shortstop J.P. Crawford made a diving stop on Santana's ground ball, but he flipped the ball to second base where no one was covering the bag.

With two outs and two runners on base, Buxton belted an elevated fastball over the left-field fence in a two-strike count. On the road trip, Buxton has compiled 11 hits — including four doubles and four homers — along with eight runs and 12 RBI in six games.

"The swing looks very synced up," Baldelli said. "It looks very tight and it's very impactful. He's finding the barrel, and the ball just really takes off when he's putting good swings on the ball. He's in the middle of it. He's feeling it."

Buxton, batting .364 over his past 17 games, gave the Twins a 2-1 lead after lining an elevated sinker from Seattle starter Bryce Miller to the wall in left field for an RBI double. The ball carried past diving left fielder Luke Raley.

In the second inning, Max Kepler lasered a one-out double into the right-center gap, the ball rocketing off his bat at 110 mph for the hardest-hit ball of the game. Jose Miranda, on his 26th birthday, followed with a seven-pitch at-bat that ended with an RBI single to center. Miranda has totaled 12 RBI in his past eight games.