小公主

初到倫敦

七歲的莎拉‧克璐（Sara Crewe）是個與眾不同的小女孩。母親生她時就去世了。六歲以前她和父親克璐上尉（Captain Ralph Crewe）都住在印度，七歲才回到英國讀書。莎拉家財萬貫，父親為她花多少錢都願意，也常常戲稱她為「小公主」。但是莎拉從不因此而自滿。她喜歡讀書，也喜歡自己編故事、講故事，而且常常假裝自己是位公主，期許自己一定要學習公主的大家風度。到了學校之後，校長瑪麗亞·敏欽（Maria Minchin）一見到他們父女，就照例直誇讚莎拉。父親也應莎拉的要求，和她一起到玩具店裡「迎接」洋娃娃艾蜜莉（Emily）。

女子學校

莎拉的學校是間女子寄宿學校。她是全校最有錢的學生，一個人就擁有兩個房間。因為莎拉很喜歡法文，所以克璐上尉特別給她僱了一位法籍女傭瑪麗葉特（Mariette）。莎拉即使對女傭也相當有禮貌，加上對洋娃娃艾蜜莉也好像對待自己的妹妹一樣，因此瑪麗葉特也很喜歡她。
第一天上法文課之前，莎拉的穿著和氣度就已經引起一陣騷動。在莎拉註冊前算是全校最有錢的拉維妮亞·賀伯特（Lavinia Herbert）覺得自己地位不保，在死黨潔西（Jessie）面前直批評小孩子不該穿那麼貴的衣服。校長以為莎拉不會說法文，給莎拉一本法文小冊子要她預習；但是其實莎拉的媽媽是法國人，克璐上尉因為喜歡她媽媽的語言，從小就常常和莎拉用法文交談，所以莎拉的法文已經相當流利了。莎拉三番兩次想向校長說明，卻一直被校長打斷。校長告訴法籍老師莎拉沒學過法文，莎拉卻用法文告訴老師自己已經會小冊子上的東西了。老師很高興，因為莎拉的法文根本就像法國人一樣好。然而這件事卻傷了校長的自尊心，因為她本人不會法文，也常常以此為憾。
莎拉的同學亞門加德·聖約翰（Ermengarde St. John）是班上程度最差的學生，常常被同學，尤其拉維妮亞和潔西嘲笑。莎拉第一天就注意到這一點，下課後便主動跟她聊天，帶她回房間作客。莎拉對自己說的故事相當有信心，決定把課本內容編成故事來幫助亞門加德學習，給她補習法文。莎拉認為這就像公主造福百姓。
學校裡年紀最小的學生洛蒂·雷（Lottie Legh）是個沒有媽媽卻被慣壞的孩子，只要不合她意思就大哭大鬧，校長和妹妹阿米莉亞小姐（Miss Amelia）都拿她沒輒。只有莎拉能用想像中天堂的樣子轉移她的注意力，讓她不再哭鬧。莎拉並且答應作洛蒂在學校的媽媽。

鑽石礦山

九歲那年，學校新女傭蓓琪（Becky）打掃時被莎拉的故事吸引，被拉維妮亞責罵，莎拉立刻幫她說話。有天莎拉發現蓓琪在自己房間打瞌睡，知道她累了，也不去叫她，靜靜的等蓓琪起來。蓓琪睜開眼，發現竟然在小姐房間睡著了，忙向莎拉道歉，莎拉則好言安慰，請她吃蛋糕，跟她聊了起來，並且答應蓓琪在以後過來打掃房間的時候把那天的故事說給她聽。
同年，克璐上尉聽從朋友的建議，開始經營鑽石礦山的事業，這個消息很快就傳遍全校。另外莎拉喜歡模仿公主的事情被拉維妮亞和潔西發現。有次洛蒂又哭鬧，拉維妮亞說想打她耳光，莎拉挺身而出，拉維妮亞當眾帶刺的稱呼莎拉「公主殿下」。從此以後，無論是嫉妒她的或是愛戴她的同學，都叫她「莎拉公主（Princess Sara）」。
第一次開採鑽石礦山相當順利，但是第二次卻改變了莎拉的命運。莎拉十一歲生日前夕，克璐上尉寫信告訴莎拉已經為她在巴黎訂作一個洋娃娃，莎拉稱之為「最後的洋娃娃（The Last Doll）」，因為她認為自己年紀不小，以後也不再適合玩洋娃娃了。校長特地給她辦了一個盛大生日會，大家都想看那個「最後的洋娃娃」。莎拉也特別向校長求情讓蓓琪留下來看洋娃娃。拉維妮亞問莎拉如果她變成了乞丐，是不是還能保持公主的風度，莎拉回答「我相信可以的」。就在大家玩得高興的同時，克璐上尉的律師巴洛先生帶來了壞消息。

淪為女傭

巴洛先生告訴校長鑽石礦山失敗，而且克璐上尉完全破產，也得熱病死了。這是個很可怕的消息，因為這幾年來校長一直相信莎拉將來會變得更有錢，所以自莎拉入學以來大部分的支出，包括「最後的洋娃娃」和這次生日會，都是她墊的。校長覺得自己被騙了，想立刻把莎拉趕出去。但是巴洛先生建議她把莎拉留下來替她做事，校長接受了。她馬上叫阿米莉亞小姐取消生日會，要莎拉換上黑衣服來見她。
校長當面告訴莎拉發生了什麼事，直接稱莎拉是乞丐，要莎拉搬到閣樓去，冷冷的宣稱莎拉的一切都歸她所有。如果莎拉向她哀求，她或許還會同情莎拉，但是莎拉卻不為所動。校長知道莎拉很聰明，什麼事都一學就會，要她從今以後去教低年級法文、到廚房打雜。同時，瑪麗葉特也被解僱。
莎拉搬到閣樓，住在隔壁間的蓓琪晚上來陪她，給她加油打氣。從此以後莎拉每天的工作愈來愈多，只有在晚上才能到教室裡看書。廚師和其他女傭受校長影響，只會欺侮、驅使她和蓓琪，拉維妮亞和潔西也常常嘲笑她。等到莎拉的樣貌變得不堪的時候，校長更不許她在餐廳吃飯。不僅如此，校長和廚師也會藉故不准她們吃東西，因此莎拉和蓓琪還常常挨餓。
校長不准莎拉再跟其他學生有所接觸，加上很多以前和莎拉要好的同學都漸漸疏遠她，莎拉決定避開與亞門加德說話的機會。但是剛從家裡回到學校、對莎拉的變故還不完全了解的亞門加德以為莎拉不想再跟她做朋友了，非常難過，有天晚上偷偷到閣樓去，想求莎拉跟她合好。莎拉把自己的狀況告訴亞門加德，兩人不但繼續做朋友，亞門加德還常常偷偷帶書上閣樓給莎拉看。和亞門加德聊天時，莎拉想起自變故以來從未使用的想像力。她把冷冰冰的閣樓想像成巴士底獄，自己和蓓琪都是囚犯，校長則是監獄的獄卒。
年紀更小的洛蒂也不明白為什麼莎拉生日之後就不再唸書了，只穿著黑衣服來教低年級功課。她聽過一些關於莎拉變故的流言，上課的時候想偷問莎拉，卻總是得不到答案。有天她聽說莎拉住在閣樓，也偷偷溜上去。莎拉告訴洛蒂她好希望趕快有人搬到對面那棟空屋。
亞門加德和洛蒂的探訪給莎拉很大的安慰，不過她們怕被校長發現之後會帶給莎拉更多麻煩，因此也不敢常常來找莎拉。莎拉平時在閣樓裡吐露心事的對象除了蓓琪以外就只有艾蜜莉和老鼠梅奇斯黛克（Melchisedec）。儘管生活如此困苦，莎拉還是堅持學習當公主，因此她對廚師、女傭和校長都還是很有禮貌。
學校附近有一家十口，莎拉稱他們為「大家庭（The Large Family）」，並給每個家庭成員取了好聽的名字。其中最重要的幾位是薇若妮卡‧尤絲塔西亞（Veronica Eustacia，真名是珍妮特‧卡麥可 Janet Carmichael）、羅莎琳‧葛萊蒂思（Rosalind Gladys，真名是諾拉‧卡麥可 Nora Carmichael）和基‧克萊倫斯（Guy Clarence，真名是唐納德‧卡麥可 Donald Carmichael）。平安夜前夕，唐納德看到莎拉，施捨她六毛錢，莎拉有禮貌的拒絕，但是因為唐納德堅持，莎拉收下這六毛錢，還說他是個「善良的好孩子」。珍妮特和諾拉知道莎拉不是乞丐，怕莎拉見怪，唐納德卻對自己的善行很得意。莎拉回去之後把這六毛錢硬幣打孔穿線戴在脖子上。
有天莎拉終於忍不住了。出門買東西，走了好幾哩路花了很多時間，回來挨了一整天的罵，又因為有一樣東西沒買到，廚師罰她不准吃飯，而街上的人只會笑她破衣破鞋、狼狽的模樣。回到閣樓向洋娃娃艾蜜莉訴苦，艾蜜莉只是看著她。從來不哭的莎拉掉下眼淚，情緒終於爆發了。她把艾蜜莉打下椅子，說它只是個什麼都漠不關心、沒有心腸、沒有感覺的稻草填充娃娃。莎拉也被自己的舉動嚇到了，但是飢寒交迫的感覺還是讓她難以自制。她說艾蜜莉「不由自主想當洋娃娃，就像拉維妮亞和潔西不懂多少事一樣」。

新鄰居

不久，對面真的搬來了一位新鄰居卡里斯福德先生（Mr. Carrisford）。卡里斯福德先生和莎拉的父親克璐上尉一樣都是鑽石礦山事業失敗之後在印度得了熱病，回到英國來休養。這位新鄰居的搬入引起全校學生和女傭的討論。莎拉想起父親也是因熱病去世的，所以每當她經過對面門口的時候，都會祈求上天保佑裡面的新鄰居早日康復。
有天莎拉發現閣樓有隻小猴子，她打開天窗的時候，正好對面卡里斯福德先生的印度僕人蘭達斯（Ram Dass）也打開天窗，莎拉用多年前學的印度話問他這隻是不是他的猴子。蘭達斯經過莎拉同意，由天窗進入莎拉房間抓猴子。他同時也注意到莎拉的居住環境，並且回報卡里斯福德先生。從此以後，蘭達斯都會講一些「右邊閣樓少女（The little girl in the righthand attic）」的事情給卡里斯福德先生聽。
卡里斯福德先生正是當年邀克璐上尉投資鑽石礦山事業的朋友。當年他以為事業失敗，不敢面對現實而逃走，但是等到他發現是自己判斷錯誤的時候，克璐上尉已經去世了。因此他一直認為自己對克璐上尉的死和他女兒都有責任。
大家庭家長卡麥可先生是卡里斯福德先生的律師，受卡里斯福德先生的委託去尋找克璐上尉的女兒。剛開始的時候他們相信她應該是在巴黎唸書，不料在巴黎竟找不到這個人。卡里斯福德先生幾乎要把克璐上尉的女兒、「不是乞丐的小女孩」和「右邊閣樓少女」聯想在一起了。卡麥可先生決定先到俄國去找找看。

「魔法」

在一個特別寒冷又陰雨濛濛的冬天裡，莎拉上街買東西，想像自己的衣服是乾的，撿到一個沒有人的銅板，買六個麵包充飢，因為校長罰她不准吃晚餐。走著走著真的看到水溝裡一個四毛錢硬幣！她把硬幣撿起來，但是還是先去麵包店問問是不是有人掉的。麵包店門口坐著一個小乞丐，已經四餐沒吃了。莎拉告訴自己這個小乞兒是「廣大民眾的其中之一（one of the populace）」，而且比自己還要飢餓。莎拉要她等一等，到店裡問老闆娘個銅板的事，老闆娘說那應該是沒有人的，莎拉可以保留。莎拉用它買了四個麵包，老闆娘看莎拉餓成那樣，又多送她兩個。莎拉給了小乞兒五個麵包，自己只留一個。老闆娘非常驚訝，告訴小乞兒只要餓了就來店裡。
就在莎拉出門的時候，蘭達斯帶了一個助手到莎拉房間裡，似乎計畫著什麼。這件事只有老鼠梅奇斯黛克知道。
當晚亞門加德跟莎拉聊天時，樓下傳來校長罵蓓琪的聲音。原來校長的點心被人偷吃了，而廚師卻一口咬定是蓓琪吃的。莎拉這時不平的告訴亞門加德始作俑者明明就是廚師自己，卻誣賴蓓琪，蓓琪常常餓到去垃圾桶撿東西吃。亞門加德知道莎拉也常常挨餓以後，決定把她阿姨下午送來的點心拿上來給莎拉吃。莎拉也邀蓓琪一起過來。靠著房間裡的簡陋擺設和莎拉的想像力，她們把這個宴會變成了豪華的宮廷晚宴。但是亞門加德的舉動不慎被拉維妮亞發現，拉維妮亞向校長打小報告。就在宴會要開始的時候，校長突然到閣樓上來，說這都是莎拉的主意，罵亞門加德竟然把精美的書帶到骯髒的閣樓，還差點把蓓琪趕出去。然後她「處罰」莎拉明天一整天都不准吃飯。
莎拉想像著桌上有熱騰騰的飯菜、壁爐燒著火、床上有厚棉被，想著想著睡著了。忽然她被煤炭燒開的聲音吵醒，發現她睡前想像的一切竟然成真了！而且桌子旁還有一件漂亮的睡衣和一疊裝訂精美的書，書的第一頁寫著「給閣樓少女」。這是夢嗎？還是有魔法師來過了呢？她知道這不是夢之後，馬上邀請蓓琪來享用。同時蘭達斯也把莎拉發現那些東西的反應告訴卡里斯福德先生。第二天全校師生看到莎拉容光煥發的樣子，簡直不敢相信。
這樣的情景一直繼續著，而且房間裡的擺設也愈來愈多。有天莎拉去收包裹時，看到最大的一個寫著「給右邊閣樓少女」。校長命令她打開，發現裡面全都是高貴的衣服，附上一張紙條說髒了、舊了隨時會更新。校長心想也許哪個有錢的遠親剛找到受虐的莎拉，就用這種方式接濟。於是她立刻改變對待莎拉的態度，要莎拉換上新衣服去教室唸書。莎拉進教室時又引起大家的注意，就像她在學校上課的第一天那樣，而且她現在看起來竟是比那時更高貴。
那天晚上，莎拉用新文具盒的筆寫了一封感謝信。第二天傍晚回來時，她跟蓓琪都發現信已經被收走，而且那隻小猴子又偷跑過來了。因為天冷，莎拉決定讓牠在這裡過夜，明天早上再送回對面。
第二天下午，卡麥可先生回來，告訴卡里斯福德先生克璐上尉的女兒也不在俄國。他們決定從倫敦敏欽女子學校開始尋找。正巧莎拉把小猴子送過來，他們發現莎拉似乎對印度有些了解，便從莎拉開始問起。問到父親叫什麼名字時，莎拉回答是萊福‧克璐。卡里斯福德先生欣喜若狂，直呼「她就是那孩子」。卡麥可先生則告訴莎拉已經找她找了兩年了。

尾聲

卡麥可太太告訴莎拉，卡里斯福德先生就是當年找她父親投資鑽石礦山的「壞朋友」。當時卡里斯福德先生以為事業已經失敗，有些心神不寧，也生了重病幾乎死掉。後來他才發現原來這次其實也是成功的，但是在他康復之前莎拉的父親就去世了。兩年來他們找過了巴黎和莫斯科，卻沒想到原來莎拉就在倫敦。卡里斯福德先生每天看到她疲憊的樣子，想讓她快樂些，才叫會飛簷走壁的蘭達斯送東西到閣樓裡，卻萬萬想不到她就是克璐上尉的女兒。所有事情都解釋清楚後，莎拉對卡里斯福德先生的疑問煙消雲散，也相當感謝他，並且決定不再回學校了。
校長聽說莎拉跑到對面，深怕她把受虐的事說出去，於是也到卡里斯福德先生家。卡麥可先生當面告訴她莎拉不會回去了。這個前倨後恭的校長立刻把目標轉向莎拉，想威脅利誘她，但是莎拉不為所動。校長回到學校，一向不敢反抗姊姊的阿米莉亞小姐終於鼓起勇氣表達自己對校長的不滿。莎拉寫信給亞門加德，把事情經過告訴她，因此這件事也傳遍全校。當晚蓓琪想到閣樓裡不會再有晚餐、魔法和公主，心裡很難過。她打開右邊閣樓的門，發現蘭達斯已經把晚餐準備好了，並且告訴她莎拉希望她到對面去當侍從。同時蘭達斯也把閣樓裡的東西從天窗搬走。
蓓琪第二天就到對面了。莎拉想起六個麵包的事，決定以後只要有乞丐再到那家麵包店門口，就請老闆娘給麵包，然後把帳單送到她那裡。她把這個決定告訴卡里斯福德先生，卡里斯福德先生同意了。莎拉和蓓琪到那家麵包店，老闆娘告訴莎拉她已經開始免費給乞丐麵包了，不過有莎拉的贊助會更順利。她又把當天那個小乞兒安妮 (Anne) 收為學徒，讓安妮在店裡幫忙。最後，老闆娘和安妮目送莎拉和蓓琪離去。