In a crisp, cool evening at Oracle Park, the Colorado Rockies put together a complete performance, riding a dominant start from left-hander Kyle Freeland and a pivotal home run from rookie Zac Veen to beat the San Francisco Giants 5-2 in the opener of a three-game set.

Freeland, whose season has been a rollercoaster of inconsistency, found his best form Friday. He worked efficiently through eight innings, scattering four hits and a walk while striking out five. The only damage against him came in the fourth inning, when Giants slugger Bryce Eldridge turned on a fastball and deposited it over the right-field wall for his second homer in three games. But Freeland never wavered, retiring the final six batters he faced and leaving the bullpen with minimal work. Brennan Bernardino came on in the ninth and allowed a run on a double by Rafael Devers before closing the door.

The Rockies broke a 1-1 tie in the fifth inning with a bit of opportunistic baserunning. With Brett Sullivan on third and two outs, Mickey Moniak chopped a sharp grounder to shortstop Christian Koss. Sullivan broke for home as soon as the ball was hit, and Koss's throw sailed wide of the plate, allowing Sullivan to score standing up. The play gave Colorado a lead they would not relinquish.

Zac Veen extended that lead in the sixth. Facing Giants right-hander Landen Roupp, Veen got a hold of a curveball and drove it 406 feet down the first-base line, splashing into McCovey Cove. The rookie's second home run of the season landed in the water, a memorable moment for the 24-year-old outfielder who has been working to find his footing in the majors.

Earlier, the Rockies had drawn first blood in the second inning. TJ Rumfield led off with a single and advanced on a groundout, then scored on a triple by Troy Johnston—his first triple of the year—that sailed over the head of center fielder Heliot Ramos. Johnston's hit gave Colorado an early 1-0 lead.

Will Castro added a sacrifice fly in the ninth, giving the Rockies some insurance. The Giants managed to scratch back a run in the bottom half on Devers's double, but could not mount a full rally.

Roupp (7-12) labored through 5 2/3 innings, allowing four runs (three earned) on five hits while striking out five. He walked two and was hurt by the inability to keep the ball down in the zone. The loss extended the Giants' struggles—they have dropped seven of their last ten games and are now 10 games below .500.

For the Rockies, the win was a bright spot in a season that has been largely defined by pitching woes. Freeland, now 4-10 with a 4.72 ERA, showed flashes of the ace he was earlier in his career. His command of the fastball and changeup kept Giants hitters off balance, and he induced 12 groundouts compared to just four flyouts.

The series continues Saturday with a marquee pitching matchup: Giants right-hander Logan Webb (7-7, 3.59 ERA) will oppose Rockies right-hander Michael Lorenzen (3-10, 6.83 ERA). Webb will look to snap San Francisco's slide, while Lorenzen aims to build on Freeland's strong outing.