Le film se déroule en l'an 1900. Christian (joué par Ewan McGregor) est un écrivain britannique qui est venu au village de Montmartre à Paris en 1899, à l'époque où le mouvement bohème était le plus populaire. Il est assis dans un appartement et regarde le théâtre fermé du Moulin Rouge tout en écrivant sur une machine à écrire. L'histoire qu'il écrit porte sur la femme qu'il aimait, Satine (jouée par Nicole Kidman).
En 1899, Christian arrive à Paris et se lie d'amitié avec un groupe de bohémiens qui visitent régulièrement le Moulin Rouge. Ils tentent de produire une comédie musicale appelée "Spectacular Spectacular", que le propriétaire du Moulin Rouge, Harold Zidler (joué par Jim Broadbent), prévoit de présenter au cabaret. Le leader des Bohémiens, Toulouse-Lautrec (joué par John Leguizamo), est satisfait du talent d'écriture de Christian et insiste pour qu'il écrive leur comédie musicale, "Spectacular Spectacular". Une fois qu'ils découvrent que Christian est un écrivain extraordinaire, ils élaborent un plan compliqué pour présenter Christian à Satine, qui est une belle courtisane, dans l'espoir qu'elle soit impressionnée par lui et persuade Zidler d'engager Christian comme auteur de la comédie musicale.
Satine comprend ce qu'implique son travail, même si elle espère quitter le Moulin Rouge pour devenir une "vraie" actrice. Par une série de malentendus, elle confond Christian avec le Duc riche et puissant qui va investir dans la comédie musicale "Spectacular Spectacular". Elle est enchantée par sa poésie. Elle déclare qu'elle est tombée amoureuse de lui, mais est choquée de constater qu'il est en fait un pauvre poète bohémien.
Au bout d'un moment, le vrai Duc (joué par Richard Roburgh) retrouve Christian et Satine ensemble. Ils parviennent à lui faire croire qu'ils travaillent sur la comédie musicale "Spectacular Spectacular". Les acteurs principaux arrivent et improvisent l'intrigue du spectacle sur place : une belle courtisane indienne voit son royaume envahi par un "méchant maharaja". Elle entreprend de le séduire pour sauver son royaume, mais séduit accidentellement puis tombe amoureuse d'un joueur de sitar sans le sou. Les deux doivent cacher leur amour et éviter le maharaja, bien qu'il soit sous-entendu que l'un d'eux peut mourir à la fin de l'histoire. (On se rend vite compte que le thème de leur pièce préfigure ce qui se passe dans l'intrigue du film). Le Duc accepte de soutenir le spectacle. Mais, il montre rapidement qu'il est un homme violemment jaloux qui fermera le Moulin Rouge s'il n'obtient pas Satine pour lui. Néanmoins, il accepte que Satine soit occupé à des répétitions et en contact étroit avec Christian, l'auteur de la comédie musicale.
Christian et Satine tombent amoureux, tandis que Zidler s'efforce de maintenir l'intérêt du duc pour la comédie musicale "Spectacular Spectacular" même si Satine n'a pas encore couché avec lui. Harold Zidler découvre également que Satine est en train de mourir d'une maladie appelée tuberculose, mais ne le dit à personne en raison de sa devise, "Le spectacle doit continuer". Pendant ce temps, Christian continue à travailler sur la pièce, dans laquelle la courtisane et le joueur de sitar sans le sou finissent ensemble. Le duc, cependant, n'apprécie pas la fin et dit à la troupe que la courtisane doit finir avec le maharaja. Pour convaincre le Duc de changer d'avis, Satine accepte finalement de passer la nuit avec lui. Christian est pris de jalousie tandis que Satine dîne avec le duc, qui lui offre tout ce dont elle a rêvé. Cependant, lorsque Satine aperçoit Christian dans la rue en bas, elle refuse l'offre du Duc, et celui-ci tente de la violer. Après qu'elle se soit échappée, Satine et Christian projettent de s'enfuir.
Le Duc a maintenant compris les ruses de Satine, et dit à Zidler que si le "maharaja" n'obtient pas sa "courtisane", il fera tuer le "joueur de sitar sans le sou". Néanmoins, Zidler doit informer Satine de sa condition finale avant qu'elle n'accepte de renoncer au plan d'évasion. Elle va voir Christian et lui ment, le convainquant que son amour était un acte dans l'espoir que cela lui donnera envie de quitter Paris et donc de sauver sa vie.
Au début du spectacle, Satine se produit avec fatigue, sachant que sa vie est presque finie. Christian, refusant de renoncer à Satine, la confronte à ses coulisses. Lorsqu'elle tente à nouveau de le forcer à partir, il prend la place du héros du spectacle, lui jette de l'argent aux pieds pour "payer sa pute", et s'enfuit de la scène. Satine lui confesse son amour sous la forme de sa chanson secrète, et Christian et Satine se remettent ensemble sous les yeux du public et du duc. Le Duc tente de tuer Christian, mais Zidler l'oblige à s'enfuir. Le public applaudit ce qu'il estime être un bon drame, mais en coulisses, Satine est terrassée par sa maladie et meurt dans les bras de Christian. Comme dernier souhait, elle demande à Christian de raconter leur histoire.
Un an plus tard, toujours dans son appartement surplombant le moulin à vent rouge vide, Christian tape enfin la dernière page de son œuvre, la terminant par le couplet : "La plus grande chose que vous apprendrez jamais, c'est juste d'aimer et d'être aimé en retour".