NEW YORK — Nick Markakis drove in two runs, backing a solid outing by rookie Miguel Gonzalez, and Baltimore held on to beat struggling New York. Gonzalez (3-2) cruised through 6 2-3 innings, giving up just four hits and two runs before he was chased by consecutive homers from Eric Chavez and Ichiro Suzuki that made it 5-4. Suzuki had a chance to tie it with two runners on in the ninth against Orioles closer Jim Johnson, but grounded into a fielder's choice. Johnson earned his 31st save of the season. Wilson Betemit homered for Baltimore in the third off Freddy Garcia (4-5), who tied a season high by allowing nine hits in six innings. He did not walk a batter and struck out two. Angels 15, Rangers 8: Kendrys Morales homered from both sides of the plate during a nine-run sixth inning, capping the burst with a grand slam that sent the Los Angeles Angels romping past the Texas Rangers. Morales became the third switch-hitter in major league history to homer as a lefty and righty in the same inning. Carlos Baerga did it for Cleveland in 1993 and Mark Bellhorn of the Chicago Cubs duplicated the feat in 2002. The Angels won the opener of the four-game series and closed within four games of AL West-leading Texas. Morales connected for a two-run shot in the sixth as a lefty off Texas starter Roy Oswalt that put the Angels ahead 5-3. Morales then hit a grand slam off Robbie Ross from the right side. Red Sox 7, Tigers 3: Dustin Pedroia hit a tiebreaking homer and drove in three runs to support Clay Buchholz's eight solid innings in leading Boston to its third straight win. The Red Sox opened a 10-game homestand — their longest of the season — after taking two of three at Yankee Stadium over the weekend. Will Middlebrooks had a two-run homer and Carl Crawford added an RBI triple for Boston. Austin Jackson began the game with a homer and Miguel Cabrera had an RBI single for the Tigers, who lost for the fourth time in five games. Buchholz (9-3) allowed two earned runs and five hits, improving to 5-1 with a 2.43 ERA in his last eight starts. Max Scherzer (10-6) gave up five runs in 6 1-3 innings, striking out nine. Twins 7, White Sox 6: Jamey Caroll's sacrifice fly in the ninth inning scored Alexi Casilla and sent Minnesota to its fourth straight win. Denard Span had two hits and two spectacular catches in center field for the Twins, and Danny Valencia added three hits and two RBIs. Mariners 4, Blue Jays 1: Hisashi Iwakuma struck out a career-high 13 and Michael Saunders and Kyle Seager had two hits apiece to help Seattle win its fifth straight. In another game Oakland edged Tampa Bay 4-3 (15 innings). — Agencies