Updated

Mike Adams will not make excuses. He knows he has to pitch better.

Justin Morneau hit a go-ahead single in the eighth inning to cap a three-hit night and carry the Minnesota Twins to a 3-2 win over the Philadelphia Phillies on Tuesday.

After the Phillies tied the score in the top of the eighth inning, Adams (1-4) walked Jamey Carroll on four pitches and gave up a single to Joe Mauer. Three batters later, Morneau got his game-winning hit off Antonio Bastardo.

"I put the team in a bad situation when I got out there," Adams said.

Adams has been bothered recently with soreness in his biceps. Tuesday's game was his first action since last Thursday.

"It feels better. I don't feel as bad as I did," he said. "I'm good enough to go out there."

Injuries have gotten the better of Adams over the past month; he was also on the disabled list May 11-25 with a back strain.

Since then, he has allowed five earned runs in 6 1-3 innings. Adams has also walked five batters. "It's disappointing that I'm letting my teammates down right now," he said. "I'm frustrated."

Philadelphia tied it at 2 in the eighth when Ryan Howard's single off reliever Brian Duensing (1-1) scored pinch-hitter Kevin Frandsen.

Glen Perkins pitched a perfect ninth, striking out Freddy Galvis to end the game and secure his 14th save.

Minnesota had lost four of five entering the game. "To be able to come through in that situation is good for everybody. Hopefully it gets us rolling in the right direction," Morneau said.

The Phillies have lost four straight after winning five in a row to climb one game over .500.

"It's really not great," Phillies starter Cole Hamels said. "You think you finally figure things out and you're finally getting momentum. Then to have the results we've been having it's not good. Guys have to make adjustments, myself included."

Hamels allowed two runs and struck out five over six innings, but he threw 108 pitches as Minnesota hitters fouled off a lot of pitches.

"I felt like I was throwing all four pitches for strikes and being aggressive with them. I think that's kind of the case that I've been trying to turn over is not give away free passes and to challenge them," he said.

"It just seemed I couldn't get those pitches by them or fool them enough to where they were missing them or they were putting them in play. I don't intend to strike every guy out; I'd like for them to put it in play to minimize the pitch count. Tonight it was tough because it added up so fast."

Twins starter P.J. Walters allowed two runs in 7 1-3 innings.

"We had two or three balls hit real hard on him. If they go, we could have been in business," said Phillies manager Charlie Manuel. "I liked our chances against him, but give the kid credit, he did good. He got his breaking ball and changeup over and got ahead in counts on us, kind of pitched us backwards."

Hamels had a 1-0 lead in the fourth before Josh Willingham, Morneau and Oswaldo Arcia doubled to give Minnesota a 2-1 lead.

Arcia's double short-hopped the wall and landed just out of the reach of Ben Revere, who had his back to the infield and leaped toward the ball at the last second.

Revere was traded to Philadelphia from Minnesota in the offseason. The speedy center fielder made spectacular catches at Target Field to take away similar hits last season.

Michael Young had Philadelphia's other RBI in the third.

This was the first time in 15 games that the Phillies failed to hit a home run.

NOTES: An MRI on Monday revealed a medical meniscus tear in Erik Kratz's left knee, an injury that requires surgery and could knock out the Phillies' catcher for the rest of the season. Kratz was second on the team with eight home runs and hurt the knee running to first base in Saturday's loss to Milwaukee. ... Revere on the Twins trading him: "They gave me a chance to be a major league player, and I just thank them every day for that." ... Coming off a start where he shut out the Brewers over 6 2-3 innings, Tyler Cloyd (2-2, 3.68) takes the mound for Philadelphia on Wednesday. He's scheduled to be opposed by Mike Pelfrey (3-6, 6.40 ERA).