Liriano tossed six scoreless innings, allowing just three hits and two walks while striking out a season-high nine batters.
"I felt great to go out there and give my team a chance to win a ballgame," Liriano said. "I feel fine physically and I was hitting my spots better than before. So it's a good feeling."
The six innings also marked a season high, as he was pulled after making 88 pitches, because it was his first start in more than three weeks. Liriano also picked up his first win and lowered his ERA to 7.20.
"He had it all," said catcher Drew Butera. "The big thing, he also kept his composure. He fell behind against a couple hitters, but regained his composure and came right back at them."
It was an impressive showing from Liriano, who helped the Twins to their first three-game sweep of the season and their first since sweeping the Padres in three games from June 17-19.
This win was less dramatic, as the first two victories over the A's came as a result of late-inning comebacks, but the Twins were happy just the same.
"It's a really good feeling," Willingham said. "I hope we get to experience it more and keep it going. I feel like we've pitched the ball really well the past three games -- we didn't hit the ball until late the past two. We got ahead of them early today. We have to be able to put together all three facets of the game -- pitching, hitting and defense -- in order to be our best. We were able to do that the last three games. It's a good combination."
Liriano retired the last 11 batters he faced, starting in the third inning when he got Josh Reddick to line into a double play with runners at first and second and nobody out.
Liriano was able to work with a lead, as Minnesota scored two early runs against right-hander Tyson Ross in the opening frame. Willingham got the Twins on the board with an RBI single after Denard Span doubled and Joe Mauer walked, before Brian Dozier snapped an 0-for-14 skid with an RBI single of his own.
Willingham was at it again in the fifth, when he crushed a two-run homer off Ross. It was his team-leading 10th of the season, and his second in as many games, as he also hit a walk-off three-run homer in Tuesday night's 3-2 win.
"We've seen it before," A's manager Bob Melvin said. "We didn't make good pitches to him. Tyson hangs a slider. Last night, we didn't make a good pitch."
Alex Burnett tossed two scoreless innings in relief of Liriano before Jeff Gray threw a scoreless ninth to help preserve the victory for the Twins.
It marked just the second shutout for the Twins, who finished their six-game homestand with a 3-3 record after being swept by the Tigers over the weekend. They also finished May with a 12-16 record after going 6-16 in April.
"It's a nice feeling to come home and win three games after getting beat by the Tigers," Twins manager Ron Gardenhire said. "We had a chance against the Tigers to get at least one of them, but these were some nice wins here. We had a couple come-from-behinds, and today was a well-pitched ballgame from our side. So it's good to win at home, and we need to do a lot more of that."