Toomkirikut on esmakordselt mainitud 1279. aastal Haapsalu linna asutamisürikus. Tegemist oli Saare-Lääne piiskopkonna peakirikuga, kus asus Saare-Lääne piiskopi ametitool ehk troon ja tegutses piiskopi vaimulik kolleegium. Toomkirik oli pühitsetud Saare-Lääne piiskopkonna kaitsepühakule pühale Johannesele.
Kirik sai kannatada 23. märtsil 1688 toimunud tulekahjus. 1726. aasta tormis hävis kiriku katus uuesti. Kirik taastati alles 19. sajandi teisel poolel. Aastatel 1886–1889 toimunud taastamistööde käigus muudeti hoonet, romaanistiilis portaal asendati pseudogooti astmikportaaliga, kaeti kinni seinamaalingute säilinud fragmendid, hauaplaadid viidi kirikust välja.
Ehituselt 15,5 m kõrguste kuplitaoliste domikaalvõlvide ja 425 m² pindalaga üks suuremaid ühelöövilisi kirikuid Põhja- ja Baltimaades.
Erakordse akustikaga (11 sekundit vältav kaja) hoone on ainus ehedal kujul säilinud keskaegne katedraal Eestis. Praegu on toomkirik EELK Haapsalu Püha Johannese koguduse kirik.