DETROIT -- Justin Morneau chose the right time to reach a milestone.
Morneau hit a go-ahead, two-run homer in the eighth inning -- becoming the first Minnesota player with 30 homers in almost two decades -- to lift the Twins to a 4-3 win over the Detroit Tigers on Wednesday night.
"That was a nice moment for our baseball team," Minnesota manager Ron Gardenhire said. "We had a little ceremony where we gave him the ball after the game. He couldn't have picked a better time to do it, either."
Gary Gaetti, Tom Brunansky and Kent Hrbek were the last Twins to hit 30 homers -- all in 1987 -- and Morneau became the first Minnesota player with 30 home runs and 100 RBI since Gaetti.
"I guess they traded the guy a bat and a team-signed ball for it," Morneau said about the souvenir ball, retrieved from the right-field seats. "My dad will end up with the ball, but it was nice."
Johan Santana won his fourth straight decision and Luis Castillo matched a career high with four hits and had a season-high three stolen bases for Minnesota, which has lost only one of its last seven games.
The Tigers, who have the best record in baseball, lost a series for the first time since July 3-5 at Oakland.
"We put ourselves in a position to make a run at something, but we've done nothing yet," manager Jim Leyland said. "If we take the attitude that we're home free, we won't get home. The beauty of the pennant race is to be the best, you have to beat the best."
Following a day off on Thursday, the Tigers go on the road to play the Chicago White Sox and Boston.
Santana (13-5) allowed three runs, four hits and two walks while striking out 10, raising his major league-high total to 178. He gave up his first hit in the fourth, allowed a run in the sixth and fell behind when Brandon Inge's two-run homer gave the Tigers a 3-2 lead in the seventh.
But the Twins quickly went back in front on Morneau's home run.
"That was great to see. Not just for tonight's game, but he's a part of Twins history now," Santana said. "We knew we had a chance to win the series and also catch up some, so this was big."
Joel Zumaya (6-2) inherited a runner when Jamie Walker allowed a walk -- just his second unintentional pass this season -- to start the eighth. Zumaya struck out Michael Cuddyer on consecutive pitches that went 81 and 101 mph, then Morneau turned on a fastball and hit it just inside the right-field foul pole.
"Of course, I'm upset," Zumaya said. "Inge turned the game around for us off Santana, so you want to go in there and keep the lead. But I've learned, you have to erase this because we have three games against the world champs and they're going to need me. I can't have this in my head."
Detroit starter Jeremy Bonderman gave up two runs, eight hits and two walks while striking out five in seven innings.
"I'm not disappointed that I didn't win. I'm disappointed we didn't win," Bonderman said. "It would've been big to get two of three."
Minnesota went ahead 1-0 in the first when Castillo led off with a single and Nick Punto followed with an RBI double.
Santana struck out Tigers consistently with an array of fastballs, changeups and breaking balls before they finally got to him in the sixth.
Rookie Brent Clevlen, who doubled against Santana in his first career at-bat on July 30, tripled and scored on Placido Polanco's single. Castillo's fourth single put the Twins ahead 2-1 in the seventh.
- Minnesota will place LHP Francisco Liriano on the 15-day DL on Thursday, when he is scheduled to have an extensive MRI exam on his elbow and forearm. RHP Boof Bonser was recalled from Triple-A Rochester to take Liriano's roster spot and place in the rotation Saturday.
- Detroit LHP Mike Maroth, who had elbow surgery June 2, gave up two homers and three runs in three-plus innings in his first rehab start at Triple-A Toledo.
- Twins RHP Matt Garza, a top prospect, is to make his major league debut Friday at home against Toronto.
- Six people were arrested Wednesday at Tiger Stadium, the historic ballpark the team left in 1999, accused of breaking in and vandalizing it.