Even though the first batter Cahill faced, Gregor Blanco, doubled, it looked as though the right-hander was going to find a way to get out of the first inning unscathed when he retired the next two hitters.
Angel Pagan, though, followed by drawing a four-pitch walk, and the Giants pulled off a double-steal for the game's first run.
Hector Sanchez then drove home Pagan with a single to right and Brandon Belt capped the frame with a triple to give San Francisco a 3-0 lead.
"I don't have an answer for you," D-backs manager Kirk Gibson said about the cause of Cahill's first-inning struggles. "We got through [Melky] Cabrera, then he walks Pagan on four pitches then single, triple. He threw the ball very well after that, though."
But by that point, the D-backs were already down by three, and once again the pressure was on the offense to play from behind.
That usually plays right into the hands of a pitcher like Giants starter Barry Zito, who feasts on overaggressive hitters.
The left-hander, who beat Arizona two weeks ago at Chase Field, held the D-backs to just one run before departing after allowing a leadoff homer in the eighth.
"He was out of rhythm a little at times early in the game, but he settled down and his command got better," Giants manager Bruce Bochy said. "He had all his pitches going, and he pitched a great game out there."
The D-backs had their share of chances against Zito, but were just 2-for-11 with runners in scoring position and also had a baserunning miscue cost them a run in the second.
Jason Kubel led off the second with a double, and one out later, Chris Young blooped a single to left to put runners on the corners with Montero at the plate. Young then broke for second on a 2-2 count and pulled up before getting to the bag as shortstop Brandon Crawford applied the tag.
"Just a mistake," Gibson said. "We made several mistakes today, I'm not going to list them. It's my responsibility to have the ballclub playing better than that. That's my fault."
Montero's subsequent flyout ended the inning as opposed to bringing home Kubel.
"I went to steal the base, [and] I thought I was going to be out by a lot, so in my head, I'm thinking, 'Break it down and get into a rundown and try to get the guy to score from third,' and by the time I did it, it was way too late," Young said. "It wasn't a play or a hit-and-run or any kind of sign given. It was just I normally have the green light and I wanted to take the chance of getting the stolen base and I just messed it up."
The D-backs also struggled to execute when the Giants pulled off the first-inning double-steal.
"That's my responsibility as well," Gibson said. "It's my fault."
After allowing four runs in the first two innings, Cahill managed to not allow another run before exiting the game after walking Zito to open the seventh.
"I was just kind of mixing it up," Cahill said. "I was throwing more quality pitches. I was down in the zone more. I was just executing pitches better."
Still, he was only able to last six innings, something that was a concern for Gibson given the way he has had to use his bullpen of late.
"We've got to get more innings out of our starters," Gibson said.
The D-backs did battle back as John McDonald hit his first career pinch-hit homer to lead off the eighth and pull the D-backs to within 4-2.
Then in the ninth, Arizona put two runners on with one out against Giants closer Santiago Casilla, but Montero struck out swinging and Ryan Roberts flied out to deep right to end the game.
"It was a great at-bat," Gibson said of Roberts' seven-pitch showdown with Casilla. "But too many mistakes to overcome today."