De film speelt zich af in het jaar 1900. Christian (gespeeld door Ewan McGregor) is een Britse schrijver die in 1899 naar het dorp Montmartre in Parijs kwam, toen de Boheemse beweging het meest populair was. Hij zit in een appartement en kijkt neer op het gesloten theater, de Moulin Rouge, terwijl hij op een typemachine schrijft. Het verhaal dat hij schrijft gaat over de vrouw van wie hij hield, Satine (gespeeld door Nicole Kidman).
In 1899 komt Christian in Parijs aan en raakt bevriend met een groep Bohemiens die de Moulin Rouge regelmatig bezoeken. Ze proberen een musical te produceren die "Spectaculair Spectaculair" heet en die de eigenaar van de Moulin Rouge, Harold Zidler (gespeeld door Jim Broadbent), wil laten zien in het cabaret. De Boheemse leider, Toulouse-Lautrec (gespeeld door John Leguizamo), is blij met het talent van Christian om te schrijven en staat erop dat hij hun musical "Spectacular Spectacular" schrijft. Zodra ze erachter komen dat Christian een geweldige schrijver is, komen ze met een ingewikkeld plan om Christian te presenteren aan Satine, die een mooie courtisane is, in de hoop dat ze onder de indruk van hem zal zijn en Zidler zal overtuigen om Christian in te huren als de schrijver van de musical.
Satine begrijpt wat haar werk inhoudt, hoewel ze hoopt de Moulin Rouge te verlaten om een "echte" actrice te worden. Door een reeks van misverstanden vergist ze zich christelijk voor de rijke en machtige hertog die zal investeren in de musical "Spectaculair Spectaculair". Ze is betoverd door zijn poëzie. Ze verklaart dat ze verliefd op hem is geworden, maar is geschokt te beseffen dat hij eigenlijk een arme Boheemse dichter is.
Na een tijdje vindt de echte Hertog (gespeeld door Richard Roburgh) Christian en Satine samen. Ze slagen erin hem te doen geloven dat ze aan de musical "Spectaculair Spectaculair" werkten. De hoofdrolspeler komt aan en improviseert ter plekke het plot van de show: een mooie Indiase courtisane laat haar koninkrijk binnenvallen door een "boze maharadja". Ze probeert hem te verleiden om haar koninkrijk te redden, maar verleidt per ongeluk en wordt dan verliefd op een berooide sitarspeler. De twee moeten hun liefde verbergen en de maharadja ontwijken, al wordt geïmpliceerd dat een van hen aan het eind van het verhaal kan sterven. (Men realiseert zich al snel dat het thema van hun toneelstuk een voorbode is van wat er in het plot van de film gebeurt). De hertog stemt ermee in om de show te steunen. Maar hij laat al snel zien dat hij een gewelddadige jaloerse man is die de Moulin Rouge zal sluiten als hij Satine niet voor zichzelf krijgt. Toch accepteert hij dat Satine bezig zal zijn met repetities en in nauw contact met Christian, de schrijver van de musical.
Christian en Satine worden verliefd, terwijl Zidler moeite heeft om de hertog geïnteresseerd te houden in de musical "Spectaculair Spectaculair", ook al heeft Satine nog niet met hem geslapen. Harold Zidler ontdekt ook dat Satine sterft aan een ziekte die tuberculose heet, maar vertelt het niemand vanwege zijn motto "The show must go on". Ondertussen blijft Christian werken aan het toneelstuk, waarin de courtisane en de berooide sitarspeler samen eindigen. De hertog waardeert het einde echter niet en vertelt de cast dat de courtisane bij de maharadja moet eindigen. Om de hertog ervan te overtuigen dat hij van gedachten moet veranderen, stemt Satine er uiteindelijk mee in om de nacht met hem door te brengen. Christian wordt overweldigd door jaloezie terwijl Satine met de hertog dineert, die haar alles biedt waar ze van gedroomd heeft. Maar als Satine Christian op straat ziet, weigert ze het aanbod van de hertog en probeert hij haar te verkrachten. Nadat ze ontsnapt is, zijn Satine en Christian van plan om weg te lopen.
Inmiddels heeft de hertog de trucjes van Satineus gerealiseerd en vertelt Zidler dat, als de "maharadja" zijn "courtisane" niet krijgt, hij de "berooide sitarspeler" zal laten vermoorden. Desalniettemin moet Zidler Satine op de hoogte brengen van haar uiteindelijke toestand voordat ze akkoord gaat met het ontsnappingsplan. Ze gaat naar Christian en liegt tegen hem en overtuigt hem ervan dat haar liefde een daad was in de hoop dat hij daardoor Parijs zal willen verlaten en dus zijn leven zal redden.
Bij de opening van de show treedt Satine vermoeid op, wetende dat haar leven bijna voorbij is. Christian, die weigert Satine op te geven, confronteert haar backstage. Als ze hem weer probeert te dwingen, neemt hij de plaats in van de held van de show, gooit geld aan haar voeten om "zijn hoer te betalen", en bestormt het podium. Satine bekent haar liefde voor hem in de vorm van zijn geheime lied, en Christian en Satine komen weer bij elkaar in het volle zicht van het publiek en de hertog. De hertog probeert Christian neer te schieten, maar Zidler dwingt hem af. Het publiek applaudisseert voor wat zij een goed drama vinden, maar backstage wordt Satine overweldigd door haar ziekte en sterft in de armen van Christian. Als laatste wens vraagt ze Christian om hun verhaal te vertellen.
Een jaar later, nog steeds in zijn flat met uitzicht op de lege rode windmolen, typt Christian eindelijk de laatste pagina van zijn werk, en eindigt het met de koppeling: "Het grootste wat je ooit zult leren, is alleen maar om lief te hebben, en er voor terug te krijgen".