Seven strong innings from Tyler Mahle carried San Francisco to a 4-2 win, with the right-hander allowing one run on five hits for just his second victory and first since April 22.
Casey Schmitt’s go-ahead three-run homer and Jesus Rodriguez’s RBI double supplied the offense Mahle needed after Colorado took a 1-0 lead on a delayed balk ruling.
That balk scored Brett Sullivan in the third after umpires conferred on Mahle’s prior move, erased a strike to Mickey Moniak and left the Oracle Park count display out of sync, adding to the confusion.
Tony Vitello was ejected by crew chief Lance Barksdale for arguing the sequence, his second ejection in his first season as Giants manager.
The outing offered a lift before the All-Star break for Mahle, who is 2-8 with a 5.31 ERA after a rocky first half and a stint on the injured list.