The Russians, who boast the Olympics' most prolific scoring attack, got second-period goals from Nikita Gusev and Vladislav Gavrikov and a clincher from Ilya Kovalchuk in the dying seconds to eliminate the previously unbeaten Czechs, who were denied their first Olympic crown since 1998.
Russian players will try to end their drought Sunday against the winner of a later semi-final between two-time defending champion Canada and upstart Germany, who has never taken better than bronze.
The Canadians seek their fourth title in the past five Olympics. Germany captured bronze in 1932 at Lake Placid while West Germany captured bronze in 1976.
Elite NHL talent is absent at the Olympics for the first time since 1994 but there has been plenty of drama from European-based players who filled out national squads, including a Czech team bonded from world championship runs and a Russian lineup mostly from their homeland's two top clubs.
The OAR took a 1-0 lead 7:47 into the second period when Gusev took a cross-ice pass from former NHL star Pavel Datsyuk and blasted a shot into the upper corner of the goal, flag-waving supporters chanting "Russ-i-a" in delight.
Just 27 seconds later, Gavrikov finished off a 2-on-1 breakaway to give the Russians a 2-0 edge.
Kovalchuk, like Datsyuk a five-time Olympian, added an empty-net goal with 20.9 seconds remaining after the Czechs had removed goaltender Pavel Francouz for an extra attacker.
The gold 26 years ago for Russian talent, won under the Unified Team banner, was the last hurrah for a Soviet Union hockey dynasty that captured eight golds, a silver and a bronze in 10 Olympics from 1956-1992.
Canada's Olympic hockey team general manager, Sean Burke, was a goaltender on the Canadian squad that lost the 1992 Albertville final 3-1 to the Unified Team.
The Czechs, who play the Canada-Germany loser for bronze on Saturday, have enjoyed 10 Olympic hockey podium finishes but took their only gold 20 years ago at Nagano, beating Russia 1-0 in the final.