昔々のこと。ウィリアム王(デイキン・マシューズ)の娘オデット姫(ミッシェル・ニカストロ)と、近隣の国を治めるユバータ王妃の息子デレク王子(ハワード・マクギリン)は幼い頃からの仲良し。成長した彼らは恋に落ち、結婚も間近と思えた。ある日、王子の城を父と共に訪れていたオデットは、王子の不用意な発言に激怒。急ぎ、帰途についた。王の馬車が暗い森に差しかかった時、かつて王によって追放された邪悪な魔法使いロスバート(ジャック・パランス)が現れ、姫をさらった。王国乗っ取りを企むロスバートは、正統の資格を得るため、オデットに結婚を迫る。激しく拒絶されたロスバートは姫に呪いをかけ、湖の白鳥に変えてしまった。昼間は白鳥、夜は月の光がその美しい羽を照らした時だけ、もとのオデットの姿に戻れるのだ。森の湖に幽閉された姫は、カエルのジャン=ボブ(ジョン・クリース)、カメのスピード(スティーヴン・ライト)、海鳥のパフィンら動物たちと仲良くなる。一方、オデットへの思いを断ち切れないデレクは従者ブロムリー(ジョエル・マッキノン・ミリーラー)を伴い森を目指し、人間の姿に戻ったオデットと感激の再会。彼は間もなく開かれる宮廷花嫁コンテストのショーでオデットと永遠の愛を誓い、呪いを解こうと考える。だが、ロスバートはまた奸計を巡らせ、オデットを城の塔に閉じ込めて、醜い召使をオデットに変身させ、ユバータの城に送り込んだ。そうとも知らず、偽オデットに心ときめかすデレク。その頃、本物のオデットは動物たちの協力で塔から脱出に成功。美しい羽を広げて城を目指した。デレクは真相を知るやロスバートと対決し、見事に倒した。オデットの呪いも解け、二人は両国の国民に祝福されて結婚した。