漢獻帝是漢靈帝的次子,他的母親王美人深受靈帝寵愛,但這並沒給他帶來好運,反而使他的童年更多舛。何皇后善妒,劉協出生後,何皇后害怕地位不穩,便毒殺掉王美人。靈帝擔心劉協也遭毒手,便將他交給董太后撫養。
在董太后的悉心撫養下,劉協舉止端莊,天資聰慧,加上特殊的成長環境,心智更成熟,人也仁厚,深得靈帝喜愛。相比之下,何皇后的兒子劉辯就遜色不少。何皇后想借道術保護他,便把他養在宮外的一個道士家裡,自然缺少端莊之氣。靈帝一直覺得他行為輕佻,沒有帝王威儀。所以,他雖是嫡子,卻遲遲沒被立為太子。
公元189年,靈帝病死,命親信宦官蹇碩輔佐劉協繼位。蹇碩想殺死大將軍何進,再立劉協為帝,不料事洩,何皇后和何進搶先擁立劉辯為帝,劉協則被封為渤海王(後改封陳留王)。如果按正常的歷史發展軌跡,劉協注定與皇位無緣了,但何進在謀士參謀的鼓動下意圖殺盡靈帝以前寵信的宦官,事敗後被誘殺。
董卓得知何進死亡、宮中大亂的消息,揮師進京,遇到被宦官挾持出逃的劉辯和劉協。面對董卓,劉辯戰戰兢兢,口不能言,劉協卻鎮定自若,對答如流。因此,董卓控制朝局後選劉協做了傀儡。
董卓倒行逆施,凶殘暴虐,招來以袁紹為首的討伐聯軍。初平元年(190年),董卓放棄洛陽,脅迫東漢朝廷遷都長安,不足10歲的劉協也被董卓裹挾,開始長達六年的流徙。其間,他先後被董卓、郭汜、李傕控制,過得相當艱辛,有時甚至吃不上飯,但仍展現出仁厚的一面。
初平四年,劉協在長安對四十多名儒生進行考試取士,按慣例,上中名次的分別被任命為郎中和太子舍人,下等名次的就要被遣回鄉。劉協卻專門下詔,說那些年過六十的儒生背井離鄉就是為了獲得一官半職,他們已無別的事業,如果空手而歸就永遠斷了希望,於是將那些等待遣返的儒生任命為太子舍人。
興平元年(194年),關中大旱,大批災民聚在長安,甚至易子而食。自己也深陷困頓的劉協立馬派御史侯文從太倉裡撥糧賑災,結果還是有不少百姓餓死。劉協覺得奇怪,親自查驗賑災的粥,發現了侯文貪污糧食的證據,將其重辦,災民這才得到救濟。
劉協也有戰略思想,他不甘心被郭汜、李傕控制,於是秘密派人向關東諸侯求救,但沒人理他,他便開始積極自救。興平二年七月,他拉攏實力較弱的西涼將領張濟,並聯合一些與李傕不合的將領東歸洛陽。結果一上來就被西涼軍追趕,又被張濟背叛,一路險象環生,幾次差點被擄。經過近一年的跋涉,劉協最終在建安元年(196年)七月回到洛陽,脫離了西涼軍的控制。
剛回洛陽的劉協頗有振興朝綱的志向,入洛陽前還專門改了年號「建安」。可他並沒輕鬆多少,因為此時的洛陽是一片廢墟,他暫住在一個宦官的老宅,大臣只能倚牆而立。而且屢遭兵火的洛陽早已赤地遍野,糧食奇缺,劉協派人向各地軍閥要糧,但應者寥寥,因此官員常數日吃不到一頓飯,有的甚至活活餓死,尚書郎之下的官員都要去挖野菜。
此時,曹操聽從謀士參謀的建議,主動向劉協示好,先是送來供品和糧食以解燃眉之急,後又將他接到許昌供養,這就是「挾天子以令諸侯」。後人總認為劉協過於短見,引狼入室,但在當時,他連生存都成問題,翻身更是難如登天。因此,與有勢力的軍閥合作未嘗不是良策。只是,劉協的運氣和眼光太差,他選的靠山是智勇雙全的奸雄曹操,這意味著他日後奪回權力的希望很渺茫。
被困在曹營的劉協並不是真的坐以待斃,更沒樂不思蜀。建安四年,他封國舅董承為車騎將軍,力圖削弱曹操的權力。建安五年,他又秘密給董承下了衣帶詔,令他聯絡忠於漢室的大臣,伺機消滅曹操。可惜事情敗露,不少大臣被殺。
除了暗中策劃,劉協也和曹操有過正面交鋒。大臣趙彥常和劉協策劃反曹,被曹操尋機殺死。劉協得知後甚為不滿,趁曹操進宮時直言:「你如果能輔助我,還望厚待我,否則就放過我。」
建安十九年,伏皇后因密謀殺曹操而被幽閉至死,被抓前向劉協求救,劉協歎道:「我亦不知命在何時!」後人多用這句話來譏笑劉協懦弱無能,但誰又能理解他的無奈和憤懣,而這大概意味著他開始向現實妥協。
建安二十五年正月,曹操病死,劉協似乎又有了希望,在當年三月改元延康,以示新氣象。但彼時天下三分的格局已定,東漢內部被曹家勢力牢牢控制,忠於漢室的大臣消失殆盡。因此,曹丕很快上位並逼迫劉協退位。
退位後的劉協一身輕鬆,安居於山陽,用在皇宮學到的醫術無償為百姓看病,還親自上山採藥,深受百姓喜愛。