Updated

Frustrating was the word of the night for the Arizona Diamondbacks.

"It's discouraging," Arizona manager Kirk Gibson said after the Diamondbacks' 4-2 loss to the Colorado Rockies on Wednesday night. "We know that the Giants lost. We know that the Dodgers lost, so that part of it is frustrating."

Arizona, which also saw its eight-game home winning streak snapped, remained six games behind the Giants and 3 1/2 games in back of the Dodgers in the NL West heading into a four-game series with the reeling New York Mets.

"We've been scoring a lot of runs but we didn't score enough tonight and that cost us," Gibson said.

The Diamondbacks' resurgent offense was stymied by Jeff Francis (3-2), a pitcher to whom they had not lost in nearly five years. Francis scattered four hits over six innings and struck out four.

"It's frustrating when you get a guy throwing the ball like that," said Gibson. "He really changes speeds, slower and slower. He throws it away, throws it away and then he gets one in on you. He hit the corners and kept us off balance."

Diamondbacks starter Trevor Cahill (8-9) went 6 2-3 innings, allowing four runs on eight hits and two walks. He struck out six, including the side in the second.

"I felt early on I was throwing a lot more strikes," Cahill said. "I felt better than I have recently. I made a couple of mistakes and they made me pay for it."

The two most costly mistakes came in the first and third.

Dexter Fowler tripled to right-center to lead off the game and scored on a sacrifice fly to give the Rockies a 1-0 lead. Kubel tied it 1-1 in the bottom half with his team-leading 22nd home run, an opposite-field shot a dozen rows into the left-field stands.

Francis reached on a fielders' choice, Fowler singled and Scutaro doubled down the left field line to put Colorado back in front 3-1 in the third.

"I thought I made a real good pitch to Scutaro but he kept it fair somehow," Cahill said. "It's frustrating when you are not going good and making your pitches and they are still getting hits."

Rosario followed with his 16th home run with two outs in the fourth to make it 4-1.

Miguel Montero homered to lead off the seventh, chasing Francis and cutting the lead to 4-2. Rafael Betancourt came on in the ninth for his 17th save.

Fowler finished 3 for 4 with a triple, stolen base and two runs scored for the Rockies, who won for the second time in eight games.

Since Francis was signed as a free agent June 9, the Rockies are 8-2 when he starts and 5-25 when anyone else takes the mound.

NOTES: Francis snapped a six-game losing streak vs. Arizona, beating the Diamondbacks for the first time since Sept. 28, 2007. ... The left-handed Kubel has a career-high five home runs against southpaws this season. ... Kubel's 11 home runs in July are tied for the third-most in a single month in club history. Luis Gonzalez set the mark with 13 home runs in April 2001. ... Fowler has 49 career triples for the Rockies, tying Neifi Perez for the franchise record. . Montero was catching his 538th career game, passing Chris Snyder for the franchise lead. ... After an off-day on Thursday, LHP Christian Friedrich will take the mound for the Rockies against Cincinnati RHP Bronson Arroyo on Friday. Friedrich ranks third in club history with 73 strikeouts in his first 15 career starts. ... Arizona opens a four-game set against the New York Mets on Thursday with LHP Wade Miley pitching against RHP Matt Harvey in the right-hander's major league debut. Miley has allowed one run or less in four of his last five home games.