But with runners on first and third and two out, Wilhelmsen got leadoff man Ben Revere to hit a slow roller down the first-base line and Justin Smoak jumped on the ball and applied the tag -- barely -- as the speedy center fielder tried to zip past.
"With him, there's no telling what's going to happen," Smoak said. "He could lay down a bunt there, though with two outs he probably wouldn't. But he's going to try to hit it on the ground and run.
"He chopped a slow roller to me and all I could do was get to the ball and try to tag him as fast as possible. And he still about got by me. I barely nicked his jersey. I knew I hit him, but I didn't know what the umpire was going to do."
That play allowed the Mariners to happily head home at the end of a 3-4 road trip even after getting swept in Chicago. The Mariners have now won nine of their past 13 series to elevate their record to 64-68, just three shy of last year's total of 67 wins, with 30 games still to play.
"Our guys played hard today," said manager Eric Wedge. "We didn't make it easy on ourselves there at the end, but they fought through it and got it done."
Wilhelmsen notched his 21st save despite struggling with his command, throwing just 10 strikes in his 22-pitch ninth.
"He didn't have quite the same command of his fastball and was working from behind," Wedge said. "Like most pitchers, his secondary stuff is going to work off that. He has a lot of confidence in his fastball, breaking ball and changeup, and he can throw any at any point in time, but he just needs to get back to driving that fastball down into the zone when he wants."
Beavan, 23, allowed five hits and just the two runs, retiring the last 11 batters he faced before turning the game over to the bullpen.
Beavan improved to 9-8 with a 4.95 ERA in 21 starts on the season, but has been far more effective since his midseason stint in Triple-A and now has beaten the Twins twice in the past two weeks.
"I just started focusing on throwing my off-speed for strikes," he said of turning things around after the shaky first. "I didn't use my fastball as much today, but that's why I've got a curveball now. That's a big pitch for me when I get it over for strikes.
"And today was probably the most I've used my changeup since I've been in the big leagues. It got me a bunch of quick outs, which kind of got my momentum going and then I took it from there."
Trayvon Robinson's two-run, bases-loaded single capped a four-run sixth as Seattle bounced back from Wednesday's 10-0 loss.
"That's the best thing about baseball," said the young left fielder. "It's a new day, a new mind and a new guy out there. We just had to try to put it on him."
Seattle totaled just six hits but made the most of them with a 3-for-5 day with runners in scoring position, and the Mariners took advantage of a dropped fly ball in left by Willingham to score two unearned runs in the sixth-inning outburst.
"I just didn't do a lot early to help us win the game today," Willingham said. "I just missed it. I just missed the ball."
Franklin Gutierrez went 2-for-3 with a double, a stolen base and two runs scored in his third game back from his two-month stint on the disabled list following a concussion.
Kyle Seager had a run-scoring single in the first and pushed home another with a bases-loaded sacrifice fly in the sixth, increasing his team-leading RBI total to 77. Of those, 55 have come on the road, the most in the Major Leagues.
Seattle won the season series against Minnesota, 8-2, as the Twins saw their record drop to 53-78.