The 29-year-old Scotland international has penned a four-year contract at Villa Park.
The fee also the second-highest transfer in the club’s history, equaling the £12million it took to buy Stewart Downing from Middlesbrough in 2009, with Darren Bent’s £24million arrival in 2011 the club’s record.
Villa boss Roberto Di Matteo said: “I’m delighted to bring Ross on board. He’s a player with proven track record and plenty of experience in the division.
“He is a player whose goalscoring record has been excellent everywhere he has been and we feel he can be an important addition.”
McCormack joined Fulham for £11million in 2014 and scored 23 goals for the Cottagers last season and leaves having netted 42 times in his two-year spell.
Norwich had been heavily interested in the 29-year-old Scotland international but failed to agree a fee with Fulham, who accepted Villa’s bid on Wednesday.
McCormack becomes Di Matteo’s fourth summer buy after Tommy Elphick, Aaron Tshibola and Pierluigi Gollini as the club prepare for their first season outside the top flight since 1987.
He is in line to make his debut in their season opener at Sheffield Wednesday on Sunday.