Roy Halladay threw a two-hitter and Matt Stairs and Rod Barajas homered to lead Toronto to a 5-0 victory over New York on Friday. Halladay (11-6) won his third straight start and threw his major league-leading seventh complete game. He struck out eight and walked one. The right-hander, who has 11 career shutouts, is 8-1 over his past 12 starts. The Blue Jays extended their home winning streak to a season-high six games. Playing in their third city in as many nights, the Yankees put just two runners in scoring position against Halladay. Leadoff hitter Brett Gardner was hit by a pitch and stole second in the first, and Derek Jeter hit a ground-rule double in the ninth. The only other hit was Alex Rodriguez's one-out single in the fourth. Orioles 7, Red Sox 3: At Boston, Brian Roberts was a home run short of the cycle as Baltimore beat Boston's Clay Buchholz in his first start against them since his no-hitter last season. The Orioles snapped a five-game losing streak by handing Boston a rare home loss. Brian Burres (7-5) allowed three runs and six hits, leaving with a 4-3 lead with one out in the seventh. Buchholz (2-4) retired just one of the first five batters he faced and gave up four runs, five hits and five walks in five innings. George Sherrill came on with two outs and two on in the ninth. He walked Dustin Pedroia before striking out Kevin Youkilis to earn his 28th save. Roberts led off the game with a double, stole third and scored on a sacrifice fly. In the fifth, he had an RBI triple and scored on Aubrey Huff's sacrifice fly to make it 4-3. Indians 5, Rays 0: At Cleveland, Cliff Lee pitched six stellar innings and Cleveland extended Tampa Bay's season-high losing streak to five games. Jhonny Peralta hit a two-run homer and an RBI double off James Shields (7-6) as the Indians beat the Rays in Cleveland for the 11th consecutive time since Sept. 29, 2005. The Indians entered the four-game series on a 10-game losing streak - their longest in 29 years - but have consecutive wins for the first time since June 26-27. Tampa Bay had won seven straight to open a five-game lead in the AL East on July 6. Twins 3, Tigers 2: At Detroit, Nick Punto drove in two runs and Minnesota's bullpen shut down Detroit. Punto had RBIs in the fourth and sixth innings and Delmon Young added a sacrifice fly in the seventh. Minnesota starter Glen Perkins (6-2) left after giving up Detroit's second run in the seventh. Relievers Jesse Crain, Matt Guerrier and Joe Nathan retired the next seven batters - three on strikeouts - to give him his second straight win. Nathan earned his 26th save. Alexi Casilla had three hits for the Twins. Royals 3, Mariners 1: At Kansas City, Missouri, Luke Hochevar allowed one run and five hits over seven innings and David DeJesus doubled in two runs as Kansas City downed Seattle. Rangers 7, White Sox 2: At Arlington, Texas, Josh Hamilton drove in two runs and Luis Mendoza struck out eight over six innings to lead Texas over Chicago. Hamilton went 3-for-5 and including his major league lead with 93 RBIs. He has driven in 11 over his last seven games. Athletics 9, Angels 2: At Oakland, California, Sean Gallagher allowed two hits over seven innings in his Oakland debut and fellow newcomer Mike Murton drove in two runs against the Angels.