De prinses was een gewilde huwelijkskandidate. Onder meer koning George van Saksen dong naar haar hand, maar ook koning Peter V van Portugal, een volle neef van haar. Op deze verbintenis werd zeer aangedrongen door Charlottes nicht, koningin Victoria van het Verenigd Koninkrijk, maar uiteindelijk bepaalde Leopold dat zijn dochter vrij was in de keuze van een huwelijkskandidaat.
Op 27 juli 1857 trouwde Charlotte met de Oostenrijkse aartshertog Maximiliaan, een jongere broer van keizer Frans Jozef I. De prinses was verliefd op haar Maximiliaan, het was een liefdesverbintenis. De verbintenis kon ook zeer op de instemming rekenen van aartshertogin Sophie van Oostenrijk, zijn moeder. Deze was inmiddels in allerlei conflicten verzeild geraakt met haar eerste schoondochter, keizerin Elisabeth. Aan Elisabeth – die een grondige hekel aan Charlotte zou krijgen – werd de Belgische prinses door haar schoonmoeder ten voorbeeld gehouden. Zij vestigden zich in Milaan, waar Maximiliaan optrad als gouverneur van het koninkrijk Lombardije-Venetië. Charlotte trachtte haar man te ondersteunen in diens pogingen om deze Italiaanse gewesten voor het Oostenrijkse keizerrijk te behouden. In 1859 onthief Frans Jozef zijn broer evenwel van zijn functie, waarna het paar zich vestigde in het kasteel Miramare nabij Triëst.
Daar werd Maximiliaan, vooral op aandringen van de Franse keizer Napoleon III, de keizerskroon van Mexico, waar hij een marionettenkeizerrijk had weten te vestigen, aangeboden. In 1864 aanvaardde Maximiliaan dit aanbod.
Charlotte en Maximiliaan konden geen kinderen krijgen, en adopteerde daarom Agustín de Iturbide y Green als zoon en opvolger en zijn neefje Salvador de Iturbide y Marzán, beide kleinzonen van de voormalige Mexicaanse keizer Agustín I.