Posey received 27 of 32 first-place votes and 422 points from the Baseball Writers' Association of America, outdistancing 2011 winner Ryan Braun of Milwaukee, who was second with 285 points.
Pittsburgh outfielder Andrew McCutchen (245) was third, followed by St. Louis catcher Yadier Molina (241).
The AL MVP was to be announced tonight.
The 2010 NL Rookie of the Year, Posey set career highs with a .336 average, 24 homers and 103 RBIs for the World Series champion Giants. His 2011 season was cut short by a collision with the Marlins' Scott Cousins on May 25 that resulted in a fractured bone in Posey's lower left leg and three torn ankle ligaments.
Posey, the fifth overall pick in the 2008 amateur draft, won the NL batting title after teammate Melky Cabrera requested a rules change that disqualified him. Cabrera, who hit .346, missed the final 45 games of the regular-season while serving a suspension for a positive testosterone test and would have won the batting crown if the rule hadn't been changed.
Ernie Lombardi had been the previous catcher to capture the NL batting championship, in 1942.
Catchers have won the NL MVP just eight times, with Posey joining Gabby Hartnett (1935), Lombardi (1938), Roy Campanella (1951, 1953, 1955) and Johnny Bench (1970, 1972). The other winning catchers were Lombardi in 1938 and Gabby Hartnett in 1935.
Posey is the first Giants player to win since Barry Bonds was voted his record seventh MVP award in 2004.