At a performance by the Ballet Lermontov at Covent Garden, three music conservatory students, Julian Craster, Terry and Ike are in attendance to hear the ballet score Heart of Fire, composed by their teacher, Professor Palmer. Separately present is Victoria 'Vicky' Page, a young, unknown dancer from an aristocratic background, with her aunt, Lady Neston. As Heart of Fire progresses, Julian recognises the music as one of his own compositions, and Ike notices another passage as another of Julian's works. During the performance, Boris Lermontov, the company impresario, receives an invitation to an after-ballet party at Lady Neston's residence. Lermontov initially declines, but Professor Palmer persuades Lermontov to attend, saying that 'she's a great patron of the arts'. Julian leaves the performance in disillusionment at his professor's plagiarism of his music, followed by Terry and Ike.
Lady Neston has arranged the after-ballet party as a surreptitious audition, to introduce her niece to Lermontov. Lermontov and Vicki meet, and he invites her to a rehearsal of the company.
Julian has written to Lermontov to explain the circumstances behind Heart of Fire, but then tries to retrieve the letter. Lermontov's assistant Dimitri thwarts all attempts by Julian to gain entry to Lermontov's suite, but finally Lermontov gives Julian an audience. Julian says that he wishes to retrieve his letter before Lermontov has seem it, except that Lermontov has already read the letter. Lermontov asks Julian to play one of his own works at the piano. After hearing Julian play, he hires Julian as a repetiteur for the company orchestra and assistant to the company's conductor, Livingstone Montague (known colloquially to the company as 'Livy'). Lermontov fully realises that Julian was the true composer of Heart of Fire. Julian and Vicky arrive for work at the Ballet Lermontov on the same day. After Lermontov ignores Vicky's 'good morning' greeting, the company's production designer, Sergei Ratov, mollifies her disappointment.
Livy is initially disdainful of Julian, after the latter has summoned the orchestra an hour early for rehearsal and noted an error in the score, and tells Julian that as a result, the company must pay the musicians for the extra rehearsal. Later, Vicky dances in a matinee performance of Swan Lake at the Mercury Theatre, Notting Hill Gate, in a production with a company led by Marie Rambert (who appears in the film as herself in a wordless cameo). Lermontov is in attendance, which Vicky does not realise until the midst of her performance. He realises her potential and invites Vicky to go with the company to Paris and Monte Carlo, with Grisha Ljubov, the company's chief choreographer, to guide her. When his prima ballerina Irina Boronskaya announces that she is to be married, Lermontov strongly disapproves, and she leaves the company. Lermontov begins to see Vicky as a possible successor to Irina.
Lermontov decides to create a starring role for her in a new ballet, The Red Shoes, for which Julian is to provide the music. When Julian plays selections from the piano score for the ballet, Ratov and Ljubov are impressed, and Livy begins to change his attitude to Julian more favourably. As the premiere of the ballet approaches, Vicky and Julian bicker artistically.
The Red Shoes ballet is a great success, and Lermontov talks with Vicky about her future. Lermontov revitalizes the company's repertoire with Vicky in the lead roles, with Julian composing some of the most successful scores. In the meantime, Vicky and Julian have fallen in love, but keep their relationship a secret from Lermontov.
Lermontov begins to have personal feelings toward Vicky, and becomes resentful of the relationship between Vicky and Julian after he learns of their romance for the first time. Lermontov rejects Julian's latest ballet score as childish and vulgar, which Julian knows to be untrue. Lermontov fires Julian, and Vicky decides to leave the company with him. They marry and live in London where Julian works on composing a new opera. Initially enforcing Vicky's contract, which prevents her dancing with other companies, Lermontov later relents his decision to enforce Vicky's contract, and permits her to dance where and when she pleases, except for The Red Shoes, where he retains the rights to the ballet and ownership of Julian's music. Lermontov refuses to mount it again or allow anyone else to produce the ballet. Lermontov recruits Irina back to the company in the interim.
Some time later, whilst on holiday with her aunt in Monte Carlo, Vicky receives a visit on the train from Lermontov, who convinces her to return to the company to dance in a revival of The Red Shoes. On opening night, as she is preparing to perform, Julian appears in her dressing room; he has left the premiere of his opera at Covent Garden to take her back with him. Lermontov arrives, and he and Julian contend for Vicky's affections. Torn between her love for Julian and her need to dance, she cannot decide what to do. Julian, realising that he has lost her, leaves for the railway station, and Lermontov consoles her, urging her to dance.
While being escorted to the stage by her dresser, and wearing the red shoes, Vicky, apparently under the influence of the red shoes, runs out of the theatre. Julian, on the platform of the train station, sees her and runs towards her. Vicky jumps from a balcony and falls in front of an approaching train.
Shaken by the events and broken in spirit, Lermontov appears before the audience to announce that "Miss Page is unable to dance tonight – nor indeed any other night." As a mark of respect, the company performs The Red Shoes with a spotlight on the empty space where Vicky would have been.
While lying close to death on a stretcher, bloody and battered, Vicky asks Julian to remove the red shoes, just as in the end of The Red Shoes ballet.