La storia inizia nel New England, nel 1835. Sarah, una bella ragazza, incontra suo padre, Alex Stafford, per la prima volta. A sei anni Sarah apprende di essere il prodotto della relazione adulterina di Stafford con sua madre, Mae. Mae fu spinta ad abortire il bambino, ma si rifiutò di farlo. Questa decisione separò lei e Alex e lasciò Mae depressa. Sarah comincia a pensare che la colpa sia sua, ma spera che Alex non torni mai più.
Più tardi, quell’anno, Cleo, la cameriera di Mae, con riluttanza, porta Sarah con sé in una gita in riva al mare, in modo che Mae possa avere una visita privata con Alex. Cleo porta Sarah con lei in un bordello popolare dove Cleo è conosciuta e ha un compagno maschile. Dopo essersi ubriacata accetta di andare a letto con lui mentre Sarah aspetta nella sala. Dopo che quest’uomo lascia Cleo di nuovo con il cuore spezzato, Cleo in un torpore mezzo ubriaco dice a Sarah “la verità di Dio” e costringe una spaventata Sarah ad ascoltarla mentre dice che nessun uomo si preoccupa mai per una donna e tutto ciò che vogliono è il sesso.
Mae e Sarah si trasferiscono poi in una baracca sul molo, dove Mae inizia a prostituirsi per sbarcare il lunario. La sua reputazione è nota in tutta la città, e la giovane Sarah è costretta a subire il rifiuto della gente del posto per questo. Attraverso questa esperienza, Sarah impara a mascherare le sue emozioni e a sostituirle con una dura esteriorità.
Alcuni anni dopo, Mae muore per una terribile malattia, lasciando Sarah sola all’età di otto anni con un uomo ubriaco di nome Rab. Non sapendo cosa fare con la piccola, Rab cerca una casa per la bambina. Trova un uomo che sta cercando una bambina per il suo ricco padrone. Pensando che questo sia il colpo di fortuna di Sarah, Rab porta Sarah nel ricco quartiere. Sono accolti alla porta da una donna che incita Rab a portare via Sarah e a non tornare. Non dissuaso, Rab insiste che Sarah è perfetta per quest’uomo ricco. La donna ammette la coppia e li manda in una camera da letto al piano di sopra, dove hanno l’ordine di aspettare che il suo padrone possa vederli.
Duke, il padrone di casa, accoglie Sarah e Rab; pochi minuti dopo, Rab viene strangolato davanti agli occhi di Sarah, il suo corpo gettato in un vicolo vicino. Duke, che è un pedofilo, aveva setacciato la città non per una nuova figlia, ma per una nuova vittima. Duke informa Sarah (da lui ribattezzata Angel) che ci sono molte cose che vuole insegnarle. Le dà la prima “lezione” quella notte stessa.
Dopo circa 10 anni con Duke, Angel finalmente fugge e si imbarca su una nave diretta in California. Derubata e costretta a prostituirsi invece di essere violentata dai passeggeri, per lo più uomini, sbarca a San Francisco con nient’altro che i vestiti che indossa. Angel viene presa da ‘The Duchess’, la proprietaria di The Palace, un bordello a Pair-a-Dice e diventa una prostituta esclusiva e molto costosa. Impiegata dalla Duchessa, Angel è sorvegliata costantemente, i suoi magri guadagni le vengono nascosti. Il suo unico conforto è Lucky, un compagno di prostituzione che è spesso ubriaco. Lucky ricorda ad Angel sua madre.
Michael Hosea vede Angel per la prima volta durante un viaggio a Pair-A-Dice per vendere prodotti. E’ pronto a partire quando Dio dice a Michael “lei è quella giusta”, la donna che lui è destinato a sposare. Michael scopre presto, con suo grande shock, che Angel è una prostituta. Ancora determinato ad ascoltare il comando di Dio e a sposare Angel, Michael paga l’alto compenso per i suoi servizi nella speranza di convincerla a partire con lui. Lei rifiuta ostinatamente la sua offerta. Scoraggiato, Michele interroga Dio, ma obbedisce comunque. Paga l’onorario di Angel per tre notti successive, parlando e ragionando con lei fino a quando il suo tempo e il suo denaro non sono finiti. Angel mantiene la sua facciata fredda e sarcastica per dissuaderlo, volendo sfuggire al dolore che le sue parole le causano. Nel frattempo, lei non riesce a sfuggire ai pensieri di Michael e alla sua crescente speranza di una vita fuori dal Palazzo.
Dopo l’ultima notte con Angel, Michael si sente frustrato e lascia Pair-A-Dice. Alcuni giorni dopo, ritorna a Pair-A-Dice, incapace di ignorare ancora il comando di Dio. Trova Angel quasi morta a causa di un pestaggio brutale da parte di Magowan, la guardia del corpo della Duchessa. Disposto ad usare qualsiasi mezzo per preservare la vita di Angel, Michael le chiede di sposarlo per poterla portare nella sua cabina. A malapena cosciente, Angel accetta, borbottando “Perché no?”
Michael cura Angel nella sua capanna. Angel rimane a malapena tollerante dell’accordo mentre serve ai suoi bisogni. Michael sopporta la durezza di Angel, rimanendo fedele alla sua nuova moglie e al piano di Dio. Il cognato vedovo di Michael, Paul, torna a casa dopo un’infruttuosa ricerca dell’oro nella Sierra. Paul riconosce immediatamente Angel come la costosa prostituta del Palace. Credendo che Angel abbia ingannato Michael, Paul la tratta male. Paul cerca di dire a Michael della professione di Angel, ma lo fa solo arrabbiare. Paul pensa che Michael abbia sposato Angel per cieca lussuria e senza sapere che era una prostituta. Durante la sua visita Paul pensa che ci sia una spaccatura tra lui e Michael a causa di Angel, non sapendo che Michael ama Angel nonostante il suo passato e che è lui a causare la spaccatura tra loro.
Quando finalmente guarisce dalle sue ferite, Angel cerca di scappare da Michael nella speranza di tornare al bordello per riavere i suoi soldi che la Duchessa le aveva tenuto nascosto e insisteva che fossero spesi in vestiti e cibo che Angel riceveva. Quando Paul parte per vendere i prodotti della sua terra a Pair-A-Dice, Angel vede questo come un modo per scappare. Mentre Michael è fuori a lavorare nel campo, lei corre dietro al carro di Paul. Lui accetta di prenderla con sé se lei lo ripaga con il suo unico mezzo di pagamento: se stessa. Lui è disgustato dalle sue azioni ancora di più dopo che hanno fatto sesso insieme e spera che quella sia l’ultima volta che la vedrà.
Quando torna a Pair-A-Dice, vede che il palazzo è bruciato uccidendo il suo carissimo compagno Lucky, e un’altra prostituta di nome Mai Ling. Non sapendo dove andare, inizia a lavorare sopra un bar, ancora una volta come prostituta. Anche se detesta essere vista solo come una prostituta, non ha altre abilità con cui guadagnarsi da vivere. Un livido Michael la trova in una stanza con un cliente e combatte per uscire dal bar pieno di uomini ubriachi che aspettano il loro turno con Angel.
Tornano alla capanna, dove Michael si affida a Dio per superare la sua rabbia per la sua infedeltà. Angel comincia a sviluppare dei sentimenti affettuosi verso Michael, che lei non può comprendere perché non si è mai permessa di amare nessun uomo, perché la “verità di Dio” diceva che avrebbero approfittato di lei o l’avrebbero abbandonata, proprio come suo padre. Nonostante la sua continua freddezza, Michael la ama incondizionatamente. Mostrandole un’alba, le dice: “Questo è ciò che voglio darti”. Angel sente se stessa diventare di giorno in giorno più tenera di cuore, ma nella sua incertezza e paura si rifiuta di condividerlo con Michael. Sente un profondo senso di vergogna per la sua “impurità”. È ammorbidita dall’amore di Michael, ma non riesce a vedersi degna di lui. Sebbene abbiano dormito insieme regolarmente, Angel è molto distaccata dall’esperienza del sesso, ma quando una notte prova la stessa gioia e lo stesso piacere che prova Michael (“E volò, Michael con lei, nei cieli…”), questo la spaventa.
Fugge ancora una volta, questa volta a Sacramento; sulla strada le viene offerto un passaggio da un vecchio che vende vasi. Arrivata a Sacramento, mentre cerca lavoro, incontra di nuovo Joseph Hochschild, che ha costruito il suo nuovo negozio, e rimane con lui, sapendo che è un buon amico di Michael. Lavora per lui nel suo negozio insieme a sua moglie e sua madre. Quando arriva un ordine per Michael, lei cerca di andarsene ma Joseph la tiene occupata, facendola aspettare più a lungo. Quando finisce i suoi compiti e va a chiudere il negozio, Michael è in piedi sulla porta, essendo tornato di nuovo per lei. Lei ammette di essere spaventata dall’idea di essere innamorata di lui, ma lui la rassicura e la riporta a casa.
Al loro arrivo nella valle, incontrano la famiglia Altman, che ha una ruota rotta ed è bloccata sul lato della strada. Michael li aiuta a riparare il loro carro e li invita a restare nella loro capanna. Angel rivela alla signora Altman e alla figlia maggiore, Miriam, di aver incontrato Michael in un bordello, ed è stupita di scoprire che hanno solo compassione per lei invece di disprezzo. Diventano intimi, e Angel prende in simpatia la figlia maggiore, Miriam, che comincia a piacere a Paul, che vive all’altro capo della valle. Quando Angel vede Miriam parlare con Michael, suppone che i due provino qualcosa l’uno per l’altra e salta alla conclusione che sarebbero una coppia migliore di lei e Michael. Paul vuole che anche Michael finisca con Miriam, ma ha anche iniziato a sviluppare dei sentimenti per la sedicenne Miriam. Lui nega i suoi sentimenti solo perché desidera vedere Michael con Miriam invece che con Angel.
Nel frattempo, viene rivelato in un flashback che durante il suo periodo come amante di Duke, Angel è rimasta incinta due volte ed entrambe le volte un infuriato Duke l’ha fatta abortire da un dottore, prendendo misure la seconda volta per assicurarsi che lei non possa più rimanere incinta. Angel lo rivela più tardi a un Michael devastato. Rivela anche che una volta ha fatto sesso con suo padre, che è venuto al suo bordello, in un tentativo di vendetta perché ha lasciato sua madre. È sommersa dal senso di colpa per il modo insensibile in cui lo ha trattato. Sapendo che ha sconvolto suo marito, e sentendosi in colpa per non essere stata in grado di dare a Michael dei figli suoi, come lei sa che lui desidera, Angel scappa ancora una volta, lasciandosi dietro la fede nuziale, nella speranza che Michael sposi Miriam e abbia dei figli con lei. Michael è distrutto, ma dice che non cercherà più Angel se lei non vuole stare con lui.
Questa volta Angel va a San Francisco. Quando arriva, trova lavoro presso un uomo gentile di nome Virgil. Lui la prende come cuoca nel suo caffè e si prende cura di lei. Ma dopo mesi di duro lavoro, il caffè va a fuoco e con esso tutti i risparmi e gli averi di Angel. Osservando l’incendio in strada, una povera Angel sente una voce familiare: è Duke, che la saluta. Temendo di fare del male a Virgil, che sembra sospettare di Duke, Angel accetta di tornare con lui.
Una volta di nuovo sotto il potere di Duke, Angel dovrebbe riprendere la sua vita di prostituta. Tuttavia, la preferenza sessuale di Duke è per le ragazze giovani, e chiede ad Angel di gestire le sue future “compagne”, ma solo dopo una settimana di prostituzione. Angel deve essere presentata ad una folla di uomini. Lei comincia a lottare nella sua mente e grida internamente a Dio. Si prepara a salire sul palco per intrattenere gli uomini. Quando finalmente è davanti a loro, la voce di Dio le dice di cantare e lei inizia a cantare “Rock of Ages” alla folla stupita e confusa. Un uomo dai capelli grigi canta insieme a lei e si avvicina alla parte anteriore del palco. Lei dimentica le parole della canzone e lui la finisce.
Dopo la presentazione, Duke rimprovera Angel. Tuttavia, viene accolto dallo straniero canterino della folla. Quest’ultimo minaccia di far impiccare Duke, se egli mette un solo dito su Angel. Con questo l’uomo scorta Angel fuori, e mentre escono Angel salva altre due giovani ragazze che Duke stava usando come vittime. Quando gli uomini del bordello vedono le due ragazze con Angel, si infuriano e distruggono il posto. L’uomo le porta a casa sua, dove sua moglie e sua figlia si prendono cura di loro. Jonathan Axle, l’uomo che l’ha salvata, è un ricco e rispettato banchiere con una solida famiglia cristiana. Angel inizia a frequentare la chiesa con la famiglia Axle e si affeziona a loro.
Nel frattempo, Miriam rivela di essere innamorata di Paul, e i due si sposano mentre Angel è via. Michael aspetta ancora il ritorno di Angel e prega continuamente per il suo ritorno. Vedendo il suo dolore, Miriam insiste che Paul vada a cercare Angel, ma Paul, ancora pieno di disprezzo per la donna che crede essere Angel, rifiuta.
Angel alla fine riconosce l’amore di Dio per lei e riceve Cristo nel suo cuore. Comincia a lavorare con le prostitute aiutandole ad abbandonare le loro vecchie abitudini e imparando nuove abilità che potrebbero aiutarle a guadagnarsi da vivere. Susanna Axle, la figlia di Jonathan Axle, la aiuta a gestire la pensione.
Paul finalmente cede a Miriam e va a San Francisco a cercare Angel. La vede con un vecchio – Jonathan Axle – e pensa che lui sia un cliente e lei ancora una prostituta. È furioso per aver fatto tutta questa strada, e comincia a inventare scuse da dare a Miriam per non doverla ferire dicendole che Angel è una prostituta. Tuttavia, il giorno dopo decide di salire alla casa e affronta Angel. All’inizio si comporta in modo freddo, sprezzante e sarcastico, ma rimane sorpreso dalla sua umiltà e dal genuino amore che nutre per Michael. È scioccato nell’apprendere che lei ha lasciato Michael nella speranza che lui sposasse Miriam in modo da poter avere dei figli. Quando scopre che Paul è sposato con Miriam, e che Michael la sta ancora aspettando dopo tre anni di assenza, tutto il suo mondo crolla e non si sente più giustificata a rimanere a San Francisco.
Finalmente prende la decisione di lasciare Susanna a capo della casa, e torna da Michael. Lo sorprende nel campo dove lui sta lavorando, inginocchiandosi ai suoi piedi e piangendo. È addolorata nel vedere come la perdita di lei abbia avuto un effetto profondo su Michael. Gli rivela che il suo vero nome è “Sarah”. Michael, lui stesso in lacrime, la riceve con amore gentile, puro e indulgente, e dichiara di credere che la rivelazione del suo nome sia una promessa di Dio che un giorno potranno avere dei figli (la Sarah della Bibbia era una donna sterile che, per grazia di Dio, alla fine riuscì ad avere un figlio). Finalmente iniziano una nuova vita insieme, la vita che hanno sognato.
Nell’epilogo, si dice che Michael e Sarah hanno avuto quattro figli.