Het verhaal begint in New England, 1835. Sarah, een mooi jong meisje, ontmoet haar vader, Alex Stafford, voor het eerst. De zesjarige Sarah verneemt dat zij het product is van Staffords overspelige verhouding met haar moeder, Mae. Mae werd aangespoord om het kind te aborteren, maar weigerde dit te doen. Deze beslissing scheidde haar en Alex en maakte Mae depressief. Sarah begint te denken dat het haar schuld is, maar ze hoopt dat Alex nooit meer terugkomt.
Later dat jaar neemt Mae’s dienstmeisje Cleo met tegenzin Sarah mee op een uitstapje naar de kust, zodat Mae een privé-bezoek met Alex kan brengen. Cleo neemt Sarah mee naar een populair bordeel waar Cleo bekend is en een mannelijke metgezel heeft. Nadat ze dronken is geworden stemt ze toe met hem naar bed te gaan terwijl Sarah in de hal wacht. Nadat deze man Cleo weer met gebroken hart verlaat, vertelt Cleo in een halfdronken roes Sarah “Gods waarheid” en dwingt een bange Sarah haar aan te horen dat geen enkele man ooit om een vrouw geeft en dat het enige wat ze willen seks is.
Mae en Sarah verhuizen dan naar een krot in de haven, waar Mae in de prostitutie gaat werken om rond te komen. Haar reputatie is in de hele stad bekend, en de jonge Sarah wordt daardoor gedwongen de afwijzing van de dorpsbewoners te ondergaan. Door deze ervaring leert Sarah haar emoties te maskeren en ze te vervangen door een harde buitenkant.
Een paar jaar later sterft Mae aan een vreselijke ziekte, waardoor Sarah op achtjarige leeftijd alleen achterblijft met een dronken man genaamd Rab. Rab weet niet wat hij met het kleine kind aan moet en zoekt een thuis voor het kind. Hij vindt een man die op zoek is naar een meisje voor zijn rijke meester. Rab denkt dat dit Sarah’s doorbraak is en neemt Sarah mee naar de rijke buurt. Ze worden aan de deur begroet door een vrouw die er bij Rab op aandringt Sarah mee te nemen en niet meer terug te komen. Rab blijft volhouden dat Sarah perfect is voor deze rijke man. De vrouw laat het tweetal binnen en stuurt ze naar een slaapkamer boven, waar ze moeten wachten tot haar meester hen kan zien.
Duke, de meester van het huishouden, verwelkomt Sarah en Rab; minuten later wordt Rab voor Sarahs ogen gewurgd, zijn lichaam gedumpt in een nabijgelegen steegje. Duke, die pedofiel is, had de stad uitgekamd, niet voor een nieuwe dochter, maar voor een nieuw slachtoffer. Duke vertelt Sarah (door hem omgedoopt tot Angel) dat er veel dingen zijn die hij haar wil leren. Hij geeft haar haar eerste “les” nog diezelfde nacht.
Na ongeveer 10 jaar met Duke, ontsnapt Angel eindelijk en gaat aan boord van een schip op weg naar Californië. Beroofd en gedwongen zich te prostitueren in plaats van verkracht te worden door de overwegend mannelijke passagiers, ontscheept ze in San Francisco met niets meer dan de kleren die ze aanheeft. Angel wordt opgenomen door ‘The Duchess’, de eigenares van ‘The Palace’, een bordeel in Pair-a-Dice en wordt een exclusieve, dure prostituee. In dienst van de hertogin wordt Angel voortdurend bewaakt en haar schamele inkomsten worden haar onthouden. Haar enige troost is Lucky, een collega-prostituee die vaak dronken is. Lucky doet Angel aan haar moeder denken.
Michael Hosea ziet Angel voor het eerst op een trip naar Pair-A-Dice om producten te verkopen. Hij is klaar om te vertrekken als God tegen Michael zegt “zij is de ware”, de vrouw met wie hij moet trouwen. Michael ontdekt al snel tot zijn schrik dat Angel een prostituee is. Nog steeds vastbesloten om gehoor te geven aan Gods bevel en met Angel te trouwen, betaalt Michael de hoge prijs voor haar diensten in de hoop haar over te halen met hem weg te gaan. Zij wijst zijn aanbod koppig af. Ontmoedigd twijfelt Michael aan God, maar gehoorzaamt toch. Hij betaalt Angel’s honorarium voor drie opeenvolgende nachten en praat en redeneert met haar tot zijn tijd en geld op zijn. Angel houdt haar koude, sarcastische front om hem af te raden, omdat ze wil ontsnappen aan de pijn die zijn woorden haar bezorgen. Ondertussen lijkt ze niet te kunnen ontsnappen aan de gedachten aan Michael en haar stijgende hoop op een leven buiten het paleis.
Na de laatste nacht met Angel raakt Michael gefrustreerd en verlaat hij Pair-A-Dice. Een paar dagen later keert hij terug naar Pair-A-Dice, niet in staat om Gods bevel nog langer te negeren. Hij vindt Angel bijna dood door een bruut pak slaag van Magowan, de lijfwacht van de Hertogin. Michael wil alles doen om Angel’s leven te redden en vraagt haar met hem te trouwen, zodat hij haar mee kan nemen naar zijn hut. Nauwelijks bij bewustzijn stemt Angel toe, terwijl hij mompelt: “Waarom niet?”
Michael zorgt dat Angel weer gezond wordt in zijn hut. Angel blijft nauwelijks tolerant voor de regeling terwijl het haar behoeften dient. Michael verdraagt Angel’s hardheid en blijft trouw aan zijn nieuwe vrouw en God’s plan. Michael’s weduwnaar, zwager Paul, keert terug naar huis na vruchteloos goudzoeken in de Sierras. Paul herkent Angel onmiddellijk als de dure prostituee uit het paleis. Paul denkt dat Angel Michael heeft bedrogen en behandelt haar slecht. Paul probeert Michael te vertellen over Angel’s beroep, maar maakt hem alleen maar boos. Paul denkt dat Michael met Angel is getrouwd uit blinde lust en zonder te weten dat zij een prostituee was. Tijdens zijn bezoek denkt Paul dat er een breuk is tussen hem en Michael vanwege Angel, niet wetende dat Michael van Angel houdt ondanks haar verleden en dat hij degene is die de breuk tussen hen veroorzaakt.
Wanneer ze eindelijk van haar wonden is genezen, probeert Angel weg te lopen van Michael in de hoop terug te keren naar het bordeel om haar geld terug te krijgen dat de hertogin van haar had achtergehouden en erop stond dat het werd besteed aan de kleding en het voedsel dat Angel kreeg. Wanneer Paul vertrekt om de opbrengst van zijn land te verkopen in Pair-A-Dice, ziet Angel dit als een manier voor haar om te ontsnappen. Terwijl Michael op het veld aan het werk is, rent ze achter Pauls wagen aan. Hij stemt erin toe haar mee te nemen als ze hem terugbetaalt met haar enige ruilmiddel: zichzelf. Hij walgt nog meer van haar daden nadat ze samen seks hebben en hoopt dat dat het laatste van haar is dat hij ooit nog zal zien.
Bij haar terugkeer naar Pair-A-Dice ziet ze dat het paleis is afgebrand waarbij haar liefste metgezel Lucky, en een andere prostituee met de naam Mai Ling, zijn omgekomen. Met nergens anders om heen te gaan, begint ze te werken boven een bar – opnieuw als prostituee. Hoewel ze het verafschuwt gezien te worden als niets anders dan een hoer, heeft ze geen andere vaardigheden om de kost te verdienen. Een woedende Michael vindt haar in een kamer met een klant en vecht zich een weg uit de bar vol dronken mannen die wachten op hun beurt met Angel.
Ze keren terug naar de hut, waar Michael vertrouwt op God om zijn woede over haar ontrouw te verwerken. Angel begint gevoelens van genegenheid voor Michael te ontwikkelen, die ze niet kan bevatten omdat ze zichzelf nooit heeft toegestaan van een man te houden, omdat “Gods waarheid” zei dat ze misbruik van haar zullen maken of haar in de steek zullen laten, net als haar vader. Ondanks haar aanhoudende kilheid, houdt Michael onvoorwaardelijk van haar. Als hij haar een zonsopgang laat zien, zegt hij: “Dat is wat ik je wil geven.” Angel voelt zich met de dag zachtaardiger worden, maar in haar onzekerheid en angst weigert ze dit met Michael te delen. Ze voelt een diep gevoel van schaamte over haar “onreinheid”. Ze wordt zachter door Michaels liefde, maar ziet zichzelf niet als waardig voor die liefde. Hoewel ze regelmatig met elkaar naar bed zijn geweest, is Angel erg afgesloten van de ervaring van seks, maar als ze op een nacht dezelfde vreugde en hetzelfde genot ervaart als Michael (“En ze vloog, Michael met haar, de hemel in…”), schrikt ze daarvan.
Ze vlucht nog een keer, dit keer naar Sacramento; onderweg krijgt ze een lift aangeboden door een oude man die potten verkoopt. In Sacramento aangekomen, op zoek naar werk, ontmoet ze opnieuw Joseph Hochschild, die zijn nieuwe winkel heeft gebouwd, en ze blijft bij hem, wetende dat hij een goede vriend van Michael is. Ze werkt voor hem in zijn winkel, samen met zijn vrouw en moeder. Wanneer er een bestelling voor Michael binnenkomt, probeert ze weg te gaan, maar Joseph houdt haar bezig, waardoor ze langer moet wachten. Als ze klaar is met haar werk en de winkel gaat sluiten, staat Michael in de deuropening en is hij weer voor haar teruggekomen. Ze geeft toe dat ze bang is voor het idee verliefd op hem te zijn, maar hij stelt haar gerust en brengt haar naar huis.
Bij hun terugkomst in de vallei ontmoeten ze de familie Altman, die een kapot wiel heeft en aan de kant van de weg is gestrand. Michael helpt hun wagen te repareren en nodigt hen uit om in hun hut te blijven. Angel vertelt mevrouw Altman en de oudste dochter, Miriam, dat ze Michael in een bordeel heeft ontmoet, en is verbaasd dat ze alleen maar medelijden met haar hebben in plaats van minachting. Ze worden hecht en Angel vindt de oudste dochter, Miriam, wel aardig. Zij begint een oogje te krijgen op Paul, die aan het andere eind van de vallei woont. Als Angel Miriam ziet praten met Michael, neemt ze aan dat ze gevoelens voor elkaar hebben en concludeert ze dat zij een veel beter stel zouden zijn dan zij en Michael. Paul wil dat Michael ook met Miriam eindigt, maar begint ook gevoelens voor de 16-jarige Miriam te ontwikkelen. Hij ontkent zijn gevoelens alleen omdat hij Michael met Miriam wil zien in plaats van met Angel.
Tussen wordt in een flashback onthuld dat Angel in haar tijd als Duke’s minnares twee keer zwanger is geraakt en beide keren heeft een woedende Duke een dokter het laten aborteren, waarbij hij de tweede keer maatregelen heeft genomen om ervoor te zorgen dat ze nooit meer zwanger kan worden. Angel onthult dit later aan een ontredderde Michael. Ze onthult ook dat ze ooit seks heeft gehad met haar eigen vader, die naar haar bordeel kwam, in een poging wraak te nemen omdat hij haar moeder had verlaten. Ze wordt overspoeld door schuldgevoelens over de harteloze manier waarop ze hem behandeld heeft. Ze weet dat ze haar man geschokt heeft en voelt zich schuldig dat ze Michael geen kinderen heeft kunnen geven, terwijl ze weet dat hij daar zo naar verlangt. Angel loopt opnieuw weg, haar trouwring achterlatend, in de hoop dat Michael met Miriam zal trouwen en kinderen met haar zal krijgen. Michael is verpletterd, maar zegt dat hij niet weer achter Angel aan zal gaan als zij niet bij hem wil zijn.
Deze keer gaat Angel naar San Francisco. Als ze daar aankomt, krijgt ze een baan bij een zachtaardige man genaamd Virgil. Hij neemt haar aan als kok in zijn café, en zorgt voor haar. Maar na maanden van hard werken brandt het café af, en daarmee ook al Angel’s spaargeld en bezittingen. Terwijl ze op straat naar de brand kijkt, hoort een bedroefde Angel een bekende stem – het is Duke, die haar begroet. Uit angst dat hij Virgil, die Duke verdacht vindt, pijn zou doen, stemt Angel toe met hem mee terug te gaan.
Eenmaal weer onder Duke’s macht, wordt van Angel verwacht dat ze haar leven als prostituee hervat. Duke’s seksuele voorkeur gaat echter uit naar jonge meisjes, en hij vraagt Angel om zijn toekomstige “metgezellen” te beheren, maar pas na een week prostitutie. Angel moet worden voorgesteld aan een menigte mannen. Ze begint te worstelen in haar hoofd en roept inwendig tot God. Ze is klaar om het podium op te gaan en de mannen te vermaken. Als ze eindelijk voor hen staat, zegt de stem van God dat ze moet zingen en ze begint “Rock of Ages” te zingen voor de ontzagwekkende en verwarde menigte. Een grijsharige man zingt met haar mee en begeeft zich naar het front van het podium. Zij vergeet de woorden van het lied, en hij maakt het af.
Na de presentatie geeft Duke Angel een berisping. Hij wordt echter opgewacht door de zingende vreemdeling uit de menigte. Hij dreigt Duke te laten ophangen als hij Angel ook maar met één vinger aanraakt. De man begeleidt Angel naar buiten, en onderweg redt Angel twee andere jonge meisjes die Duke als slachtoffer gebruikte. Als de mannen van het bordeel de twee jonge meisjes met Angel zien, worden ze woedend en vernielen het bordeel. De man neemt ze mee naar zijn huis, waar zijn vrouw en dochter zich over hen ontfermen. Jonathan Axle, de man die haar gered heeft, is een rijke en gerespecteerde bankier met een solide christelijke familie. Angel gaat naar de kerk bij de familie Axle en raakt op hen gesteld.
Terwijl onthult Miriam dat ze verliefd is op Paul, en de twee trouwen terwijl Angel weg is. Michael wacht nog steeds op de terugkeer van Angel en bidt onophoudelijk voor haar om terug te komen. Miriam ziet zijn verdriet en dringt er bij Paul op aan om Angel te gaan zoeken, maar Paul, die nog steeds vol minachting is voor de vrouw die Angel volgens hem is, weigert.
Angel erkent uiteindelijk Gods liefde voor haar en ontvangt Christus in haar hart. Ze begint te werken met prostituees door hen te helpen hun oude gewoonten te verlaten en nieuwe vaardigheden te leren waarmee ze in hun levensonderhoud kunnen voorzien. Susanna Axle, de dochter van Jonathan Axle, helpt haar het pension te runnen.
Paul geeft uiteindelijk toe aan Miriam en gaat naar San Francisco om Angel te zoeken. Hij ziet haar met een oude man-Jonathan Axle-en denkt dat hij een klant is, en zij nog steeds een prostituee. Hij is woedend dat hij helemaal hierheen gekomen is, en begint smoesjes te verzinnen om Miriam te geven zodat hij haar niet hoeft te kwetsen door haar te vertellen dat Angel een prostituee is. De volgende dag besluit hij echter naar het huis te gaan en Angel te confronteren. Eerst doet hij kil, minachtend en sarcastisch, maar hij wordt opgeschrikt door haar nederigheid en de oprechte liefde die ze voor Michael koestert. Hij is geschokt als hij hoort dat zij Michael heeft verlaten in de hoop dat hij met Miriam zou trouwen zodat hij kinderen zou kunnen krijgen. Als ze ontdekt dat Paul met Miriam getrouwd is, en dat Michael na drie jaar afwezigheid nog steeds op haar wacht, stort haar hele wereld in en voelt ze zich niet langer gerechtvaardigd om in San Francisco te blijven.
Ze neemt uiteindelijk het besluit om Susanna de leiding over het huis te laten hebben, en gaat terug naar Michael. Ze verrast hem op het veld waar hij aan het werk is, knielt huilend aan zijn voeten. Ze ziet tot haar verdriet hoe het verlies van haar een diepe uitwerking op Michael heeft gehad. Ze onthult dat haar echte naam “Sarah” is. Michael, zelf in tranen, ontvangt haar met vriendelijke, zuivere en vergevende liefde, en verklaart dat hij gelooft dat de onthulling van haar naam een belofte van God is dat zij op een dag kinderen zullen kunnen krijgen (de Sarah in de Bijbel was een onvruchtbare vrouw die, door de genade van God, uiteindelijk een zoon kon krijgen). Eindelijk beginnen ze samen een nieuw leven, het leven waar ze van gedroomd hebben.
In het nawoord wordt gezegd dat Michael en Sarah later vier kinderen kregen.