The Giants managed only three hits against Homer Bailey and three Reds relievers, but got two of them in the 10th - along with a passed ball by Ryan Hanigan - to pull it out. San Francisco won despite striking out 16 times.
"We kept scratching and clawing down two games to none," reliever Jeremy Affeldt said. "That's the way it is in the playoffs."
Cincinnati finished with four hits, just one after the first inning.
Lefthander Barry Zito will pitch Game 4 on Wednesday for the Giants, who have won the last 11 times he started. The Reds have to decide whether to go with ace Johnny Cueto, forced out of the opener in San Francisco on Saturday with spasms in his back and side.
Manager Dusty Baker said after the game that they hadn't decided whether to let Cueto try it, bring back Mat Latos on short rest again, or replace Cueto with Mike Leake, who wasn't on the NLDS roster.
Replacing Cueto would leave the Reds' ace ineligible to pitch in the NL Championship Series should the Reds get that far.
"It's very difficult, but it all depends on if your ace can't go or whatever it is," Baker said. "That's part of the conversation - us going without him. We realize what's at stake."
The Reds haven't won a home playoff game since 1995, the last time they reached the NLCS.
St. Louis removed Jaime Garcia from their NLDS roster, a day after he lasted only two innings in his Game 2 start because of an ailing shoulder. An MRI revealed that the lefthander has a strained rotator cuff and inflammation in his throwing shoulder. He'll be replaced by rookie righthander Shelby Miller.
Garcia's health was a concern after he missed 2 months this season with shoulder fatigue, but he had pitched well since returning in mid-August and won his last three regular-season starts.
The Cardinals' series against the Nationals is tied, 1-1, and resumes Wednesday in Washington.
* Washington's Stephen Strasburg, shut down by his team after going 15-6 in 159 1/3 innings, is trying to play the good soldier and cheer on his teammates. He is part of the team, but not the postseason roster. "I've accepted it, and I'm just trying to be here for the team," he said.
When the Nationals shut him down, he was very public about his displeasure. What changed?
"Time, basically," Strasburg said. "I'm still pretty upset. I'm kind of past that. It's done with. There's nothing you can do. I could sit here and be upset and not be a good teammate, but I don't want to be that type of guy. I want to pull for these guys and make sure that everybody knows that I'm with them, even though I'm not out there playing."