PHILADELPHIA -- Chad Bettis retired the first 18 batters and took a no-hitter into the eighth inning, Troy Tulowitzki hit two solo homers and the Colorado Rockies beat the Philadelphia Phillies 4-1 on Friday night.

Cody Asche singled through a shift to end Bettis' no-hit bid with one out in the eighth. Bettis (2-0) lost a perfect game in the seventh when shortstop Tulowitzki made an error on Ben Revere's grounder up the middle.

The 26-year-old Bettis allowed two hits and tied a career-high with seven strikeouts in eight innings in his 12th start in the majors.

Tulowitzki had two homers in 154 at-bats this season before going deep his first two times up against Cole Hamels (5-4). Ben Paulsen hit a two-run homer for the Rockies, who won for the fifth time in six games.

Reds 5, Nationals 2

CINCINNATI -- Washington's Stephen Strasburg left after only 16 pitches, and Zack Cozart had three hits as Cincinnati rallied against the Nationals' bullpen to win for only the second time in 12 games.

Strasburg gave up a solo homer in the first inning to Joey Votto and walked Brayan Pena on his 16th pitch to open the second. He shrugged after the pitch, a trainer went to the mound, and Strasburg headed for the clubhouse after a brief conversation.

Taylor Jordan (0-1) took over and gave up three runs in the sixth. Brandon Phillips -- limited to pinch hitting because of a sore toe -- tied it with a sacrifice fly. Billy Hamilton singled for a 3-2 lead, stole second, and scored on Cozart's third single of the game.

Anthony DeSclafani (3-4) went six innings for his first win since April 20.

Marlins 4, Mets 3

NEW YORK -- Rookie Justin Bour hit a three-run homer to back Dan Haren, and the Miami extended Mets pitcher Matt Harvey's winless streak to five starts.

Haren (5-2) limited the Mets to four hits in seven innings to help the Marlins stopped their three-game skid. A.J. Ramos held on in the ninth for his third save.

Lucas Duda and Curtis Granderson homered for the Mets, who had won three straight and almost rallied in the ninth.

Harvey (5-3) struck out 11, but fell to 0-3 in his last five outings, a string that includes two games in which he pitched shutout ball before leaving in the late innings.

Orioles 2, Rays 1

BALTIMORE -- J.J. Hardy's single drove in the winning run with two outs in the ninth inning, Chris Davis homered and Baltimore handed Tampa Bay its sixth straight loss.

Travis Snider led off the ninth with an infield hit off Brandon Gomes (1-2). With two outs, Davis greeted Xavier Cedeno with a single that advanced pinch-runner Everth Cabrera to third. Hardy then lined a single to left against Steve Geltz.

The Rays loaded the bases with no outs in the ninth against Darren O'Day (1-0), who worked out of the jam by striking out Steven Souza Jr. and Asdrubal Cabrera before getting Jake Elmore to ground into a force at third base.

Souza homered for the Rays, who have lost their last three games in the ninth or 10th inning.

Royals 8, Cubs 4

CHICAGO -- Lorenzo Cain hit a tiebreaking RBI double and scored in a three-run eighth inning, and Kansas City snapped a four-game losing streak.

Alcides Escobar homered on the game's first pitch. Alex Gordon and Salvador Perez also went deep, and the Royals won after squandering a 4-1 lead.

Mike Moustakas walked leading off the eighth against Pedro Strop (1-3). Cain then drove him in with a double to the base of the wall in right-centre and the Royals scored two more thanks to an error by centre fielder Dexter Fowler.

Kelvin Herrera (1-1) gave up a tying solo drive to Addison Russell in the seventh but picked up the win.

Rangers 7, Red Sox 4

ARLINGTON, Texas -- Josh Hamilton homered in his first two at-bats, his first homers since he belatedly began his major league season this week back with Texas, helping the Rangers beat Boston.

Hamilton pulled both homers into the seats in right field off knuckleballer Steven Wright (2-2). The homers came in the second and fourth innings, on pitches measured at 74 and 66 mph. Wright uncorked a third-inning wild pitch to score a run.

Rangers right-hander Yovani Gallardo (5-6) limited the Red Sox to one earned run and four hits through six innings. Shawn Tolleson, who became Texas' primary closer last week, recorded his sixth consecutive save.

Robinson Chirinos went 2 for 4 for Texas with a two-run double in the eighth inning.

Cardinals 3, Dodgers 0

ST. LOUIS -- John Lackey worked seven scoreless innings and St. Louis got just enough off the Dodgers' Mike Bolsinger to get its fifth straight victory.

The Cardinals ended Bolsinger's streak of 18 2/3 consecutive scoreless innings on Randal Grichuk's bases-loaded double play ball in the first. Jhonny Peralta doubled twice with an RBI and Grichuk, starting in left field in place of ailing Matt Holliday, batted cleanup for the first time and had an RBI double in the third.

The Dodgers have been shut out four straight times on the road, inclduing getting outscored 10-0 in a three-game sweep at San Francisco May 19-21.

Lackey (3-3) struck out nine and allowed five hits.

Bolsinger (3-1) gave up two runs on seven hits in six innings.

Blue Jays 6, Twins 4

MINNEAPOLIS -- Chris Colabello hit two-run tiebreaking homer in the ninth inning against former teammate Glen Perkins, giving Mark Buehrle and Toronto a win on a soggy night

Buehrle (6-4) made a drastic recovery from a four-run first inning for his second complete game this season, raising his record in 51 career starts against the Twins to 29-19. Buehrle retired 24 of the last 26 batters he faced, allowing one single. The other reached on an error.

Toronto's Josh Donaldson homered for the fourth straight game, a three-run shot off Trevor May in the fifth that tied the game.

Perkins (0-1), the major league leader in saves, started fresh in the ninth inning after 10 straight outs by the Blue Jays. Russell Martin drew a walk after falling behind 0-2, and Colabello followed with his dramatic drive into the bullpen behind left-centre field.

Minnesota snapped a five-game winning streak.

Diamondbacks 7, Brewers 5

MILWAUKEE -- Nick Ahmed's tiebreaking solo home run in the eighth inning helped Arizona snap a three-game skid.

Ender Inciarte, David Peralta and A.J. Pollock also went deep, and Paul Goldschmidt had three doubles for the Diamondbacks.

Ahmed's homer off Jonathan Broxton (1-2) put Arizona ahead 5-4, and Pollock's two-run shot in the ninth extended the lead.

Addison Reed (2-2) pitched 1 2/3 innings in relief to get the win. Brad Ziegler surrendered a run in the ninth but picked up his third save in five chances.

White Sox 6, Astros 3, 11 innings

HOUSTON -- Geovany Soto hit a go-ahead, two-run double in the 11th inning Chicago beat Houston.

There were runners at first and second with two outs in the 11th when Soto's double off Tony Sipp dropped in front of the wall in right field to put Chicago up 5-3. Soto entered the game in the eighth inning for an injured Jose Abreu.

Adam LaRoche followed with an RBI single to push the lead to 6-3.

Dan Jennings (1-1) got the last two outs of the 10th for the win and David Robertson allowed one hit in a scoreless 11th for his 10th save.

Josh Fields (2-1) walked two in 1 1/3 innings for the loss. He was replaced by Sipp after a one-out walk in the 11th inning.

Mariners 2, Indians 1

SEATTLE -- Taijuan Walker allowed two hits over eight strong innings, Seth Smith hit a two-run homer, and Seattle beat Cleveland.

Walker (2-5) got his first win since April 27 with one of the best starts of the 22-year-old's young career. He did not walk a batter and struck out eight, matching his career high.

Smith, batting cleanup for the first time this season with Robinson Cano out sick, hit a 2-1 pitch from Trevor Bauer (4-2) into the right-centre seats in the sixth inning. It scored Nelson Cruz, who had singled.

The Mariners have homered in eight straight games and 13 of their last 14.

Fernando Rodney had trouble in the ninth, allowing a pinch-hit, run-scoring single by Ryan Raburn, but still earned his 14th save in 16 opportunities.

Giants 4, Braves 2

SAN FRANCISCO -- Buster Posey hit a two-run homer in the first inning and drove in three, Tim Hudson pitched seven strong innings and San Francisco won its fifth straight.

Hudson (3-4) gave up one run on five hits, striking out four and not walking a batter as he beat his 29th major league team. That left the Oakland Athletics, his first team, as the only one he has not beaten.

Mike Foltynewicz (3-2) was nearly as effective, retiring 11 in a row at one point. He gave up the two runs on five hits, walking one and striking out a career-high eight.

Freddie Freeman blasted his sixth homer of the season, a solo shot that easily cleared the centre field fence in the ninth.

Angels 2, Tigers 0

ANAHEIM, Calif. -- Albert Pujols had his 530th career homer among three hits, and Hector Santiago pitched three-hit ball into the eighth inning of Los Angeles' win over Detroit.

Huston Street got four outs for his 15th save, striking out Yoenis Cespedes with the bases loaded to end the eighth as the Angels nudged their record back above .500 (25-24).

Santiago (4-3) was finally rewarded for an impressive May, getting just his second victory in his last seven starts.

Anibal Sanchez (3-6) yielded six hits in seven strong innings for the Tigers, who were shut out for the second time in five days.

Detroit has scored just six runs in its last five games while losing five of seven overall.

Athletics 6, Yankees 2

OAKLAND, Calif. -- Sonny Gray pitched eight innings for his sixth win of the season, Stephen Vogt drove in two runs and Oakland beat New York.

Gray (6-2) retired 11 straight after walking Brett Gardner to lead off the game. Brian McCann ended the streak with a leadoff home run in the fifth -- his fourth in four games -- and the Yankees scored again the sixth but managed little else against Gray and two relievers.

It was a sharp bounce back for Gray, who struck out five, walked two and allowed four hits and two runs.

Brett Lawrie added a two-run home run for the A's.

Oakland entered the night with the worst record in the American League but won for the fifth time in seven games.

Alex Rodriguez singled in the ninth to extend his hitting streak to 13 games for New York.

Padres 6, Pirates 2

SAN DIEGO -- Derek Norris hit a grand slam with two outs in the bottom of the ninth as San Diego snapped Pittsburgh's season-high seven-game winning streak.

Norris' homer to centre, his fourth, capped a crazy ninth that saw the Pirates get two straight force plays at home while fielding a five-man infield.

Jedd Gyorko started the winning rally with a leadoff walk off Rob Scahill (1-3). Abraham Almonte bunted and Scahill fielded it but threw it away at first for an error, allowing Gyorko to take third and Almonte second. Cory Spangenberg was intentionally walked to load the bases. With the Pirates fielding a five-man infield, they got two straight force plays at home.

That brought up Norris for his winning slam.

Craig Kimbrel (1-1) pitched the ninth for the win.