PHILADELPHIA (AP) -- Cody Asche altered his approach against a shift and broke up a no-hit bid in the eighth inning.

Philadelphia Phillies' Maikel Franco reacts after striking out to Colorado Rockies starting pitcher Chad Bettis.(AP Photo/Matt Slocum)
Philadelphia Phillies' Maikel Franco reacts after striking out to Colorado Rockies starting pitcher Chad Bettis.(AP Photo/Matt Slocum)
loading...

The rest of the Philadelphia Phillies couldn't do anything against Chad Bettis.

The right-hander retired the first 18 batters and took a no-hitter into the eighth, Troy Tulowitzki hit two solo homers and the Colorado Rockies beat the Phillies 4-1 on Friday night.

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.

"A shift like that can't go unnoticed," the left-handed hitting Asche said of the Rockies playing three guys on the right-field side of second base. "It's probably the biggest shift I've seen all year. I was trying to do that all night."

Cole Hamels (5-4) allowed two runs and five hits in eight innings, striking out nine. He had won his last four starts.

"If you play long enough, you see ups and downs," Hamels said.

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 Hamels. Ben Paulsen hit a two-run homer for the Rockies, who won for the fifth time in six games.

The Phillies have lost five straight.

Colorado center fielder Charlie Blackmon made a sliding catch to rob Freddy Galvis of a hit after Revere's grounder went through Tulowitzki's legs. But Asche hit a sharp grounder that would have been a routine play for Tulowitzki except the two-time Gold Glove winner was shifted way over.

"That's the most shifts I've seen against us all year," Phillies manager Ryne Sandberg said.

Bettis allowed a bloop single to Carlos Ruiz one out later, but struck out pinch-hitter Darin Ruf to end the inning. Ruf appeared to check his swing and jumped up and threw his hands in the air when plate umpire Angel Hernandez ruled he swung. Sandberg earned his second career ejection an inning later after Hernandez called a close pitch by reliever Luis Garcia a ball.

Tulowitzki drove an 0-1 pitch deep into the seats in left for a 1-0 lead in the first. He connected on a 1-2 pitch in the third, sending another drive into the seats in left. Tulowitzki had just two hits in 14 previous at-bats against Hamels.

Bettis took a shutout into the ninth in an 11-2 victory over San Francisco in his previous start last Sunday. The right-hander is 3-5 with a 5.77 ERA in 41 career appearances.

The Phillies scored a run off closer John Axford in the ninth when left fielder Brandon Barnes made an error on Chase Utley's deep fly to the wall, allowing Revere to score from second after he reached on a wild pitch while striking out.

NEW SPOT

Asche made his debut in left field after learning the position the past two weeks at Triple-A Lehigh Valley. He made the switch from third base after prospect Maikel Franco was called up. Asche had one putout on a liner right at him.

UP NEXT:

Rockies: LHP Jorge De La Rosa (1-2, 6.51) makes his first start since being scratched Tuesday because of a cut middle finger. De La Rosa is 2-4 with a 5.34 ERA against Philadelphia.

Phillies: RHP Aaron Harang (4-4, 1.93) tries to continue his dominance at home. He has a 0.61 ERA in Philadelphia this season. Harang is 6-6 in 15 career starts vs. Colorado.

(© 2015 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.)

More From New Jersey 101.5 FM