The Pirates roughed up Barry Zito (4-5) for eight runs on 11 hits in 4 2/3 innings, built a 10-4 lead heading into the seventh and then held on to down the Giants for the second straight night.
Pittsburgh has won four of five.
McCutchen had an RBI single in the first and then put the Pirates in front for good with a two-run double in the second.
Walker finished off a four-run fifth with a two-run single and hit a home run in the seventh. Alex Presley also had a solo blast for the Pirates in the sixth.
Francisco Loriano (5-2) surrendered four runs on eight hits, but he survived six innings to get the win.
After San Francisco scored twice in both the seventh and eighth innings, Jason Grilli came on to work a perfect ninth in a non-save situation.