BOSTON — Jon Gray walked into Fenway Park on Thursday just a week removed from the worst pitching performance of his young career.

He bounced back by silencing the best offensive team in the majors.

Carlos Gonzalez, Trevor Story and Dustin Garneau hit two-run homers and the Colorado Rockies stopped Jackie Bradley Jr.'s 29-game hitting streak with an 8-2 victory over the Boston Red Sox.

The win ended a three-game losing streak by Colorado and it ended a four-game winning streak for the Red Sox. Bradley's major league-best streak was halted when he went 0 for 4 after moving up to the leadoff spot for the first time this season.

"It was a tough assignment. That train over there was rolling pretty good," Rockies manager Walt Weiss said. "For Jon to go that deep in the game, shut them down, it's probably the best lineup in baseball right now, so a great performance."

Grey (2-2) gave up a two-run home run to David Ortiz in the first, but pitched six scoreless innings before leaving in the eighth. The performance came in his first start since giving up a career-worst nine runs in a 13-7 loss May 19, at St. Louis.

"Yeah I knew we needed a 'W' and I knew their lineup was good," Gray said. "I just took one pitch at a time and focused on what I can do and didn't worry about the results."

Thursday marked the first time this season any Red Sox player besides Mookie Betts had led off a game. He had the night off, before pinch-hitting in the ninth with Bradley on deck. But Betts grounded out to end the game.

Gray was unfazed by the shuffle. He was steady throughout the night, mixing his pitches and scattering five hits while striking out six. He got Bradley out by mixing in some changeups, which Bradley later acknowledged caught him off guard.

"I definitely had it in mind and knew that he's been swinging the bat really well and was going to be a tough out. A lot of the guys were," Gray said. "But once again, I just took one pitch at a time and executed each one best I could."

Clay Buchholz (2-5) took the loss. He pitched three perfect innings before things came apart in the fourth, when he gave up Gonzalez's homer with the other two coming the following inning.

Thursday was just the fifth time in Boston's last 15 home games that it has failed to score eight or more runs.

While Bradley's streak ended, teammate Xander Bogaerts managed to extend his hitting streak to 19 games, which takes over as the longest in the majors.

Bradley just missed a home run to right field in his first at-bat, and grounded out on his second plate appearance of the night. He flied out to centre in the fifth.

The Fenway Park crowd roared when he came to the plate to lead off the eighth, but he swung at Carlos Estevez's first pitch and grounded out.

"It happens," Bradley said. "I feel like I put some pretty good swings on the ball and they got caught."

GONZALEZ'S GROOVE

Gonzalez has hit safely in each of his last six games against AL East clubs.

BOGGS' BIG NIGHT

Before the game, Hall of Famer Wade Boggs added to his cache of memories at Fenway Park when the Red Sox retired his No. 26.

Boggs became the 10th former player to have his number affixed to Fenway's right field facade. He joined Bobby Doerr, Joe Cronin, Johnny Pesky, Carl Yastrzemski, Ted Williams, Jim Rice, Carlton Fisk, Pedro Martinez and Jackie Robinson, whose No. 42 is retired throughout baseball.

TRAINER'S ROOM

Red Sox: Farrell said C Ryan Hanigan, who left Wednesday night's game due to illness and neck stiffness and was given the day off Thursday, should be ready to return Friday. ... Farrell said LHP Eduardo Rodriguez (right patella subluxation), who began a second rehab assignment Tuesday in Triple-A Pawtucket, did some fielding practice Wednesday, but a decision is yet to be made about where his next start will be.

UP NEXT

The Rockies begin a seven-game home stand Friday against the Giants. RHP Tyler Chatwood (5-3, 3.02 ERA) will be making his 10th start of the season.

The Red Sox head north to begin a seven-game trip with three games in Toronto. RHP Joe Kelly (2-0, 5.28) will be making his fifth start of the season.

___

Follow Kyle Hightower on Twitter at http://www.twiter.com/khightower