Cain allowed four hits and no walks. He struck out five.
He pitched five scoreless innings on the off day Monday in a minor league game.
"Everything is going good. I'm just getting my pitch count up," Cain said. "I'm very excited about the group of guys that are going to play together. I don't have too much to work on. You can always work on your location but sometimes the more you think about it the worse it gets. Sometimes you have to find that rhythm and let it go."
Gregor Blanco and Justin Christian homered for San Francisco. Nate Schierholtz had two hits and Brandon Belt had four hits for the Giants.
Minor leaguer Danny Dorn hit a three-run homer off Andrew Kown for Cincinnati.
Homer Bailey allowed four runs in 3 1-3 innings for Cincinnati. He is competing with Aroldis Chapman for the fifth spot in the Reds' rotation. Chapman pitched five scoreless innings against a San Diego Padres split squad.
Bailey was inconsistent with his fastball. Whoever is left out of the rotation could end up in the Cincinnati bullpen, since the Reds lost closer Ryan Madson for the season with a torn ligament in his elbow.
"I don't know man," said Dusty Baker when asked if Bailey could be moved to the bullpen. "Those are questions we're trying to figure out."
Bailey has mixed good and bad outings over his last four starts. He had a scoreless three-inning start on March 9, allowed six runs on March 14. He pitched four shutout innings on March 19.
Saturday another down performance.
"A lot of things were working sometimes and sometimes they weren't," Bailey said. "I haven't looked at it yet, I was falling behind hitters."
NOTES: Zack Cozart singled to extend his hitting streak to seven games. ... Mike Leake pitched six innings in a simulated game on Saturday. ... Brandon Belt had three hits for the Giants, including his fifth double, to raise his average to .380.