Plot
Pada tahun 1900, seorang penulis Britania Raya bernama Christian (Ewan McGregor), yang menderita depresi, mulai menulis dengan mesin ketiknya. Seperti yang dikisahkan oleh Christian, film ini kembali ke satu tahun sebelumnya ketika ia pindah ke daerah Montmartre, Paris, untuk menjadi penulis di antara anggota gerakan Bohemian di daerah itu. Ia segera menemukan bahwa tetangganya adalah kelompok pemain sandiwara yang dipimpin oleh Henri de Toulouse-Lautrec (John Leguizamo). Henri dan yang lainnya meminta bantuan Christian dengan keterampilan menulisnya yang memungkinkan mereka menyelesaikan acara yang mereka usulkan, "Spectacular Spectacular", yang ingin mereka jual kepada pemilik Moulin Rouge, Harold Zidler (Jim Broadbent). Kelompok ini tiba di Moulin Rouge ketika Harold dan kelompok "Diamond Dog Dancers" tampil di hadapan penonton. Henri mengatur rencana bagi Christian untuk melihat Satine (Nicole Kidman), seorang pelacur utama, di tempat pribadinya untuk menunjukkan hasil karyanya, tanpa menyadari bahwa Harold telah menjanjikan Satine kepada Adipati Monroth yang kaya dan psikopat (Richard Roxburgh), seorang penanam modal potensial dalam kabaret.
Satine mengira Christian adalah Adipati Monroth dan berdansa dengannya sebelum beristirahat ke kamar pribadi Satine dengan Christian untuk mengungkapkan hal-hal rahasia, tetapi Satine segera mengetahui bahwa Christian hanyalah seorang penulis. Adipati menyela mereka, lalu Christian dan Satine mengaku bahwa mereka sedang latihan berdialog untuk "Spectacular Spectacular". Dengan bantuan Harold, Henri dan anggota rombongan lainnya menampilkan pertunjukan itu kepada Adipati dengan rencana improvisasi tentang maharaja jahat yang berusaha merayu seorang pelacur India yang mencintai pemain sitar yang miskin. Adipati mendukung acara itu dengan syarat hanya ia yang bisa melihat Satine. Satine memikirkan Christian dan kerinduannya untuk meninggalkan Moulin Rouge untuk menjadi "aktris nyata". Christian kembali kepada Satine untuk meyakinkannya bahwa mereka harus bersama dan Satine akhirnya jatuh cinta kepadanya. Ketika kabaret berubah menjadi teater, Christian dan Satine saling memandang satu sama lain dengan berpura-pura berlatih dialog Satine. Adipati menjadi curiga terhadap pertemuan mereka dan memperingatkan Harold bahwa ia dapat berhenti membiayai pertunjukan, lalu Harold mengatur agar Satine makan malam dengan Adipati malam itu, tetapi Satine jatuh sakit karena tuberkulosis. Harold membuat alasan kepada Adipati, mengaku bahwa Satine telah pergi ke pengakuan. Harold mengetahui dari dokter yang merawat Satine bahwa ia tidak memiliki waktu lama untuk hidup, tetapi ia menyembunyikan hal ini dari Satine. Satine memberi tahu Christian bahwa hubungan mereka membahayakan pertunjukan, tetapi Christian membalasnya dengan menulis sebuah lagu cinta rahasia untuk menegaskan cinta mereka.
Ketika Adipati melihat latihan Christian dengan Satine, Nini (Caroline O'Connor), seorang pemain yang cemburu, menunjukkan bahwa drama itu adalah metafora bagi Christian, Satine dan Adipati. Marah, Adipati menuntut adegan akhir diubah dengan pelacur tersebut memilih maharaja, lalu Satine menawarkan untuk menghabiskan malam bersama Adipati agar adegan akhir yang asli tidak diubah. Di rumah Adipati, Satine melihat Christian di jalan dan menyadari bahwa ia tidak bisa tidur dengan Adipati. Adipati berusaha memperkosa Satine, tetapi ia diselamatkan oleh Chocolat (Deobia Oparei), salah satu penari pria kabaret itu. Bertemu kembali dengan Christian, ia mendesak Satine untuk melarikan diri bersamanya. Adipati memberi tahu Harold bahwa ia akan membunuh Christian jika Satine tidak menjadi milik Adipati. Harold memperingatkan kembali hal ini kepada Satine, tetapi ketika Satine menolak untuk kembali, Harold akhirnya memberi tahu bahwa Satine sedang sekarat. Harold memberi tahu Satine bahwa untuk menyelamatkan hidup Christian, Satine harus memberi tahu Christian bahwa ia akan tinggal bersama Adipati dan ia tidak mencintai Christian. Christian mencoba mengikuti Satine, tetapi Christian ditolak masuk ke Moulin Rouge hingga ia menjadi depresi, meskipun Henri bersikeras bahwa Satine memang mencintai Christian.
Malam pertunjukan, Christian menyelinap ke Moulin Rouge, berniat untuk membayar Satine biaya sebagai seorang pelacur. Christian menangkap Satine sebelum ia melangkah ke panggung dan meminta Satine untuk memberi tahu Christian bahwa ia tidak mencintai Christian. Tiba-tiba, mereka menemukan diri mereka dalam sorotan, lalu Harold berimprovisasi dan meyakinkan penonton bahwa Christian adalah pemain sitar yang menyamar. Christian mencela Satine dan turun dari panggung. Dari kasau, Henri berseru, "Hal terbesar yang pernah Anda pelajari adalah mencintai dan dicintai sebagai balasannya!" Hal ini membuat Satine menyanyikan lagu yang ditulis Christian untuk menyatakan cinta mereka. Christian kembali ke panggung, bergabung dengan Satine dalam lagu tersebut dan menegaskan kembali cintanya terhadap Satine. Adipati memerintahkan pengawalnya, Warner (Linal Haft), untuk membunuh Christian, tetapi digagalkan, sementara upaya Adipati sendiri dihentikan oleh Harold. Adipati menyerang kabaret ketika Christian dan Satine menyelesaikan lagu mereka.
Setelah tirai ditutup, Satine menderita tuberkulosis. Sebelum ia meninggal, Christian dan Satine menegaskan cinta mereka dan Satine memberi tahu Christian untuk menulis kisah mereka. Setahun kemudian, Moulin Rouge telah ditutup dan Christian selesai menulis kisah cintanya untuk Satine, "cinta yang akan hidup selamanya".