The win pushed the Angels 11 games over .500 and gave them their 12th home win in the last 13 tries. It was the eighth consecutive road loss for the Twins.
Albert Pujols led the Angels by going 3-for-4 with two RBIs and two runs scored. Despite entering the game with a .161 season average with runners in scoring position, Pujols had three hits in those situations.
"I think Albert, when he's swinging it well, he's going to hit the ball whether there's runners in position, nobody on, whatever the case is," Angels manager Mike Scioscia said. "He's going to square balls up and hit it hard."
Pujols is hitting .333 with 11 RBIs in his last 11 games. In his previous 35 games, Pujols was hitting .217 with 11 runs driven in.
"When he was struggling a little at the plate, happened to have some guys in scoring position, wasn't getting hits to fall in," Scioscia said. "Good afternoon for him today, just really used the whole field and set the tone and got some big hits for us."
The three-hit performance was Pujols' fourth of the season and second this month.
Howie Kendrick's 2-for-4 day extended his hitting streak to 10 games, which ties a season high. Mike Trout's 2-for-4 game gave him 37 RBIs in the last 37 games. Efren Navarro's 2-for-4 effort marked the first hits for him since returning to the Angels.
"We're absolutely starting to do some of the things that we can do on the offensive side," Scioscia said. "We have to keep it rolling."
Los Angeles scored early against the Twins, this time plating two in the first inning and two in the third off Minnesota starter Ricky Nolasco.
The Angels scored in the first inning for the third time in four games and, in the three-game set, Los Angeles scored 16 runs in the first three innings and four in the other six innings.
"That's our goal as an offense, to get an early lead for our pitcher and hopefully you give a little cushion," Pujols said. "We have our ace going today and he went out there and showed them right away how tough it was going to be when he strikes out three guys right away."
Weaver (8-6) came out firing in the first inning, striking out the first three batters for the first time in his home career. He cruised through the first five innings, allowing only one Twins batter to reach second and surrendering one walk.
But he ran into trouble in the sixth and seventh, when Minnesota began to string hits together. Oswaldo Arcia notched an RBI single to score Joe Mauer in the sixth, capping three straight Twins hits.
"Up until the sixth inning, he was really mixing and matching, changing speeds, had a good life on his fastball," Scioscia said. "Those guys were piecing hits together in the sixth and the seventh and he had to work for it. They had a lot of action for only having one run on the board."
In the seventh, Weaver put runners on the corners with two outs and ran the count to 3-0 against Brian Dozier with Mauer on deck, representing the tying run. But Weaver located a changeup and a curveball for strikes to run the count full before Dozier popped a fastball up to short to end the inning.
"It was nice to come out of that unscathed there," Weaver said. "Made some pretty good pitches to get out of it and luckily popped that last pitch out."
Weaver became the third Angels pitcher with at least eight wins this season, which ties the Dodgers for most in the Majors.
Nolasco (4-6) got into a groove after the first three innings, sitting down nine of the next 10 Angels before back-to-back hits in the seventh knocked him out of the game.
"I was able to settle down a little bit, but then I turned a decent outing into a terrible [one] that last inning," Nolasco said. "I just couldn't finish a couple guys."
Trout's two-run double off Matt Guerrier in the seventh added some needed insurance runs for the Angels as Ernesto Frieri loaded the bases with two outs in the ninth.
Scioscia brought in Smith, who allowed a three-run double to Mauer before striking out Kendrys Morales to complete the sweep and pick up his seventh save.