Mitch Haniger, Thairo Estrada and Joc Pederson each had two hits for San Francisco (76-74), which avoided a four-game sweep.
Hunter Goodman and Brenton Doyle homered, Brendan Rodgers and Nolan Jones had three hits apiece and Austin Wynns and Charlie Blackmon added two hits apiece for the Rockies (56-93).
The Giants were hitless until Davis led off the fifth with a single and scored on Haniger's double, and then San Francisco exploded in the sixth.
Estrada singled, stole second and scored on Pederson's double. Pederson moved to third on Michael Conforto's infield single that ended Chris Flexen's day.
Davis had an RBI single, LaMonte Wade Jr. reached on a single to first and Haniger followed with a two-run double to make it 5-0. Crawford added a three-run homer, his seventh of the season.
Mike Yastrzemski then doubled to center and Estrada's second single of the inning made it 9-0.
Flexen (1-8) allowed four runs on five hits in 5 1/3 innings.
The Rockies rallied in the bottom of the sixth. Jones singled and Goodman homered to center, the first of his career, to make it 9-2. Rodgers singled, John Brebbia relieved Giants starter Sean Manaea, Alan Trejo reached on a fielder's choice and Doyle hit his ninth homer.
Manaea (6-6) allowed three runs — two earned — on eight hits in 5 1/3 innings.
San Francisco answered in the seventh on Patrick Bailey's two-run double and Colorado got one back in the bottom of the frame on Rodgers' RBI single to make it 11-6.
The Rockies nearly tied it in the ninth against Camilo Doval. Elehuris Montero doubled, went to third on Jones' single and scored on a sacrifice fly. Doval hit Rodgers with a pitch, Jones and Rodgers moved up on a wild pitch and Doval misplayed Kris Bryant's grounder to allow another run and make it 11-8.
Elias Diaz followed with a two-run single but Taylor Rogers replaced Doval and got Blackmon to line out to end it, picking up his second save.
—Field Level Media