太子妃張良娣是南陽西鄂人,后來舉家遷到昭應。她出身高宦世家,祖母竇氏是唐玄宗的母親昭成皇太后的妹妹。武則天執政時期,昭成皇太后被武則天所殺。玄宗李隆基幼年喪母之后孤苦可憐。武則天因為在她的孫子中比較喜歡李隆基,于是下詔讓竇氏入宮撫養李隆基。李隆基即皇帝位以后,為報達竇氏養育之恩,封她為鄧國夫人。張良娣是竇氏第四子張去逸的女兒,天寶年間選入李亨的太子宮冊封為良娣。
張良娣體態豐碩,而且善于言談,能夠體會理解李亨的心理,在李亨最無助的時候給了他感情上的支持。李亨的生活一直頗為坎坷,他是楊良媛所生。當初當楊氏懷孕時正是太平公主擅權的時候,太平公主專門與玄宗(當時還不是皇帝)為仇,玄宗恐怕太平公主知道他的妻妾懷孕,又要以他內多嬖寵的借口去搬弄是非,便讓東宮侍讀張說找打胎藥墮胎。張說找了二劑藥,一是安胎藥,另一是墮胎藥,任由玄宗取用,聽憑天意的決定。玄宗在深夜沒有人時煎藥給給楊氏服下去,誰知接連兩天服的是安胎藥。玄宗以為這個未出生的孩子有神靈的保佑就將孩子留了下來。待李亨生下來,恰巧太平公主因為謀逆罪被玄宗誅死,不久玄宗受禪當了皇帝,楊良媛也進位成了貴嬪。不過楊良媛并不受玄宗的寵幸,后宮受寵的是武惠妃。武惠妃享受到的禮秩幾乎同皇后一樣。為了使自己的兒子壽王李瑁取得皇儲的位置,武惠妃勾結權臣李林甫以謀反罪陷害死了太子李瑛。開元二十五年,李瑛以及鄂王李瑤、光王李琚被貶廢為庶人,不久相繼被殺。天下人都知道他們的冤枉,稱為“三庶人”。不久武惠妃因為三庶人的事疑神疑鬼,精神失常導致病死。她的兒子壽王李瑁,不僅沒有得封太子,而且壽王妃楊玉環還被玄宗奪去了。倒是忠王李亨無形中漁翁得利,按照無嫡立長的禮制被晉冊為太子。
當初李亨為忠王時,娶兗州都督韋元的女兒為妻。后來當了太子便以韋氏為太子妃,不久張良娣也入選東宮,冊封為良娣。韋堅當時任刑部尚書,他常與柳勣之等一些正直的朝臣指責李林甫的奸邪,為此得罪了李林甫。韋堅與李亨私交很好,因為李林甫陷害了前太子李瑛還時常詆毀李亨。所以李亨暗中支持韋堅、柳勣之彈劾李林甫。不料李林甫畢竟道高一籌,提前下手羅織了韋堅、柳勣之謀逆的罪名,將韋柳二人捕殺。李亨十分害怕,上表請求與韋妃絕婚,以求洗脫自己。玄宗同意了他與韋妃絕婚的請求,下旨廢去韋妃的名號,讓她削發為尼在禁中佛舍出家。安史之亂以后,韋氏陷在長安被亂兵殺死在佛舍里。韋妃沒有了以后,張良娣得到李亨的專寵。她秀外慧中而且口才十分好。玄宗逃往西蜀的時候張良娣也隨李亨在一起,當時吏民遮道乞求李亨留下來收復長安,李亨不聽,多虧張良娣從旁勸諫,李亨才定計北去靈武,因為李亨曾在那里任朔方節度,經營了多年。
當時護衛的士兵很少,每天夜里睡覺前張良娣必定睡在李亨寢室的外面守夜。李亨勸她說:“暮夜很危險,況且捍賊不是婦人的事,你不要這么辛苦。”張良娣說:“現在正是多事之秋,假如事起倉猝,妾多少可以抵擋片刻,贏得一點時間,殿下不是得到了保全么?”李亨對此十分感激。在靈武的時候,張良娣生了一個兒子,取名李佋。子以母貴,李佋深得肅宗鐘愛,立即封為興王。生下孩子才三天,張良娣便起來為戰士縫衣服,李亨說產忌勞作,不讓她再縫,張良娣反問說:“現在難道是養身體的時候么?”等到李亨、張良娣一行到達了朔方靈武,以李光弼、郭子儀為首的各鎮兵馬也陸續到了。諸大臣都要求李亨即位來穩定軍心。于是李亨在靈武城南樓即皇帝位,是為肅宗,改明年為至德元年,遙尊李隆基為上皇天帝