The Angels' ace battled his way through six innings, allowing five runs on seven hits, but struggled with his command as he tied a career high with four walks.
Meanwhile, CC Sabathia recorded his seventh win and Mariano Rivera collected his 24th save as the Angels were denied their first three-game sweep of the Yankees since July 10-12, 2009.
The Angels did make things interesting in the ninth inning, scoring five runs on five hits before Rivera struck out Albert Pujols with the bases loaded to end the game.
"The fight's always there, it's just we really executed well in the ninth inning," Angels manager Mike Scioscia said. "I think some guys off the bench did a good job with some situational hitting. Unfortunately, we couldn't get that tying run across."
J.B. Shuck and Brad Hawpe were among the "guys off the bench," as they were both called on to pinch-hit and reached base via a walk and a single, respectively. Noticeably missing from those called upon in the ninth was Josh Hamilton, who Scioscia said was unavailable because he had the day off.
Hamilton -- who hit for 40 minutes in the cage on Sunday -- said he wasn't aware he was unavailable and admitted he was "a little" disappointed to find out.
After walking Chris Stewart and surrendering a hit and a stolen base to Brett Gardner, Weaver found himself with runners on second and third and no outs in the top of the third.
But after striking out Ichiro Suzuki and getting Robinson Cano to fly out to left, Weaver got ahead of Travis Hafner and seemed poised to work his magic once again. But Hafner blasted a 2-1 slider over the center-field wall, giving the Yankees a 3-0 lead.
"Didn't really accomplish anything that I try to accomplish through the course of a game," Weaver said. "Walks were bad, first-pitch strikes were bad, getting deep in the game -- obviously didn't do that. Just one of those games where I find myself battling the whole game."
In the first inning, the Yankees had runners on second and third with no outs, but Weaver used a strikeout and a 6-4-3 double play to escape the inning unscathed.
In the third, he wasn't as fortunate as the Yankees scored five runs.
"I wasn't able to limit the damage in that inning, and that obviously [turned out] to be the difference in the game," Weaver said. "You can't go about it that way when you're facing an opposing pitcher like CC -- very disappointed in myself."
Hafner's home run not only gave the Yankees an early lead, but it also provided a much-needed spark, as the next three batters -- Vernon Wells, Lyle Overbay and Jayson Nix -- got hits.
"It was big for us," Hafner said. "Guys definitely loosened up after that. It was good to have some fun there offensively in the third inning."
The Angels had an opportunity to get to Sabathia early in the contest as Peter Bourjos led off the game with a single and Mike Trout followed with a walk. However, the Angels were unable to score in the first, and Sabathia found his rhythm from that point forward.
The Yankees' ace retired 11 straight, and when the Angels got two on to begin the fifth, he induced a double play.
"He had great stuff, had a lot of movement today," Mark Trumbo said. "He throws hard enough that you really can't pick a lot of pitches because he throws them all for strikes."
William Boor is an associate reporter for MLB.com.