IOC president Jacques Rogge announced the results immediately after the vote, which took place in Guatemala City.
Russian delegates at the meeting erupted in cheers and hugged each other. Russian Deputy Prime Minister Aleksandr Zhukov simply said he was "happy, happy. Only that -- happy."
Russia has never hosted the Winter Games, and has not staged an Olympic Games since the 1991 Soviet collapse. Moscow hosted the XXII Summer Games in 1980.
Hours ahead of the vote, Russian President Vladimir Putin praised Sochi's natural setting and promised billions of dollars to develop the Black Sea resort into a winter sports complex.
Putin, South Korean President Roh Moo-hyun, and Austrian Chancellor Alfred Gusenbauer were present at the IOC announcement.
(compiled from agency reports)