Garcia (8-7) scattered eight hits, struck out seven, and walked none over 6 2/3 innings. The righthander worked out of tight spots with runners in scoring position four times and reliever Boone Logan bailed him out of a fifth.
Granderson homered off David Price (9-8) in the first inning. David Robertson pitched a 1-2-3 eighth for the Yankees, and Mariano Rivera added a perfect ninth in a non-save situation to finish the combined shutout.
Angels 9, Rangers 8 - Howie Kendrick had three hits and four RBIs, including a tiebreaking two-run single, and host Los Angeles snapped Texas’s 12-game winning streak with a come-from-behind victory.
Torii Hunter homered for the Angels, who had a six-run rally in the sixth inning.
Athletics 8, Tigers 5 - Hideki Matsui hit his 500th professional homer and had three RBIs to lead Oakland in Detroit.
Matsui led off the sixth with his milestone homer - 168 in the majors and 332 for the Yomiuri Giants - to put Oakland ahead, 3-2, and end the outing of Duane Below, who was making his major league debut.
Twins 7, Indians 5 - Danny Valencia singled home the go-ahead run for the second straight day, this time in the eighth inning, as host Minnesota salvaged a split in the four-game series with the AL Central leaders.
Matt Capps (3-5) earned the win in relief of Nick Blackburn, who gave up four runs - one earned - in six innings. Joe Nathan earned his sixth save.
Blue Jays 11, Mariners 6 - Travis Snider hit a three-run homer, Brandon Morrow won his fifth straight decision, and host Toronto extended Seattle’s losing streak to 11 games.
Adam Lind and Edwin Encarnacion also homered for the Blue Jays, who have won seven of nine. Snider went 2 for 4 with five RBIs, matching his career high.
Royals 2, White Sox 1 - Sergio Santos threw a wild pitch in the 11th inning that allowed Alex Gordon to score, giving host Kansas City the win.
Billy Butler swung at a pitch in the dirt that got away from catcher A.J. Pierzynski and Gordon came home and scored with a headfirst slide to give the Royals their 10th win in the final at-bat.
Phillies 9, Cubs 1 - Rookie Vance Worley dominated over eight innings, Jimmy Rollins homered from both sides of the plate, and Philadelphia pounded Ryan Dempster and host Chicago.
Worley (6-1) won his fourth straight start and continues to give the Phillies all they could ask for with Roy Oswalt and Joe Blanton injured. The 23-year-old righthander allowed one run and four hits while striking out seven and walking two.
Reds 3, Pirates 1 - Johnny Cueto gave up one run over six innings as visiting Cincinnati beat Pittsburgh.
Chris Heisey and Jay Bruce had two hits apiece for the Reds, who won for just the second time in nine games this season against the Pirates.
Mets 6, Cardinals 5 - Angel Pagan homered with one out in the 10th and host New York rallied from an early four-run deficit to beat sputtering St. Louis.
Carlos Beltran hit a two-run homer and Josh Thole had two RBIs for the Mets, including a tying single off Jason Motte with two outs in the eighth.
Rockies 3, Braves 2 - Carlos Gonzalez singled home the winning run off Eric O’Flaherty with two outs in the bottom of the ninth to lift Colorado.
Brewers 5, Diamondbacks 2 - Visiting Milwaukee gave young reliever Ryan Cook a rude welcome to the big leagues as Ryan Braun, Nyjer Morgan, and Rickie Weeks had RBIs in a three-run 10th inning to beat Arizona.
Astros 3, Nationals 2 - Pinch hitter Jason Michaels hit an RBI single in the 11th inning to lift host Houston over Washington for consecutive victories and a series win for the first time since taking two of three from the Dodgers in June.
Padres 14, Marlins 3 - Ryan Ludwick and Jesus Guzman both drove in four runs for visiting San Diego, which notched a season high in runs.