初平三年(公元192年),董卓被王允、吕布所杀。不久,董卓旧部李傕、郭汜攻陷长安,吕布败走,灭王允三族。汉献帝被李傕、郭汜控制。后来李、郭互相争权夺利,混战不休。汉献帝被他们抢来夺去,又追又杀,受尽逃亡之苦。献帝想找大臣调解李郭的冲突,但谁也不敢去。郭汜决定将献帝劫持到营中,但手下有人叛逃到李傕营中,将其计划泄露。某夜,天子被李傕的侄儿李暹叫醒。献帝一看,宫外有三千兵马和三乘马车。太尉杨彪阻止李暹说:“自古帝王,无在人〔臣〕家者。举事当合天心,诸君作此,非是也。”(自古以来,帝王从没有住在臣民家中的,你们这样做,是不对的!)李暹回道:“将军计定矣。”天子坐一乘,贵人伏氏坐一乘,尚书贾翊和左灵合坐一乘,群臣徒步跟在献帝的车后出宫,全部入了李营。李傕让部下将宫中的东西和女人都抢到营中,然后纵火焚烧皇宫,烧得献帝无家可归。郭汜也不是省油的灯,将能捉到的公卿大臣,都劫持到营内做人质。朱俊将军气愤之极,当场倒地身亡。献帝派杨彪去郭营化解李郭的矛盾,也被扣留了。
郭汜准备攻打李营。杨彪说:“群臣共斗,一人劫天子,一人质公卿,此可行乎?”(群臣共斗,其中一人劫持天子,另一人以公卿为人质,这可以吗?)郭汜闻言大怒,拔刀欲刺。中郎将杨密劝阻,郭汜才让杨彪滚回去。时值酷暑,献帝与群臣在李营饮食不济。献帝要求李傕拨给米五斛、牛骨五具,以赐左右。李傕说:“朝?上饭(早晚两次送饭),何用米为?”另外,他让人送来五具发臭的牛骨。献帝大怒,打算责问李傕。侍中杨琦说:“傕,边鄙之人,习于夷风,今又自知所犯悖逆,常有怏怏之色,欲转车驾幸黄白城以纾其愤。(打算把陛下转移到池阳的黄白城,以纾解其愤恨。)臣愿陛下宜恕忍之,未可显其罪也。”献帝采纳其言,进封李傕为大司马,位在三公之上。
公元196年,汉献帝历尽磨难,率领百官到达忠于汉室的王邑治下的河东郡,并与李郭追兵达成暂时和解。献帝获得喘息之机,将安邑作为临时首都,改元建安。不久,献帝东迁到旧都雒阳,并当即封赏有功的将领和大臣,以收揽人心,培植势力。当时,雒阳已被乱军烧劫一空,残破不堪,疮痍满目。不过献帝并未气馁,和百官一道出城采野菊,找野菜,以度难关。但天意弄人,就在汉献帝历经千辛万苦,以为苦尽甘来,却遇上一代枭雄曹操。正是刚离狼窝,又进虎口。
汉献帝只要一有机会,便会展示自己的才能。兴平元年(公元194年),出现蝗灾,长安城内谷一斛值钱50万,百姓饥馑,发生人吃人的惨剧。献帝令侍御史侯汶开仓济民,但饿死的人并未减少。献帝怀疑侯汶舞弊,于是亲自检验,用米、豆各5升于殿内熬粥,竟有两大盆之多,与平时迥然不同,轻而易举地查明侯汶中饱私囊,结果将侯汶杖打50。从此以后,灾民得到救济。(《资治通鉴》卷61)宋元时期史学家胡三省评论说:“观此,则献帝非昏蔽而无知也,然终以失天下者,威权去己而小惠不足以得民也。”
献帝也曾努力挣脱傀儡的命运,但功败垂成。建安四年(公元199年),献帝18岁,任命外戚董承为车骑将军,秘密写下衣带诏赐给董承,授意董承联络刘备等汉室大臣诸侯,诛杀曹操,但事机不密,被曹操获悉。建安五年(公元200年),曹操火速赶回许都,捕杀车骑将军董承、长水校尉种辑、将军吴子兰、王服,并灭其三族。董承的女儿是献帝的贵人,这时已怀有身孕,献帝极力保护,最后也未能幸免。曹操借此杀了大批忠于献帝的大臣,朝廷上下都是他安排的亲信。刘备先前已借故出走,得免于难。董贵人被曹操害死后,伏皇后深感不安。她致信其兄伏完,历数曹操罪恶,请伏完待机而动,除掉曹操。建安十九年(公元214年),伏皇后的图谋泄露,曹操知道后大怒,逼迫献帝废后,并先替献帝写好诏书,命御史大夫郗虑持节(手执符节)接收皇后的印绶。曹操又命尚书令华歆领兵入宫捉拿伏皇后,将躲进宫中夹墙内的伏皇后搜出,披发赤脚的伏皇后被拖到外殿,伏皇后见献帝与郗虑同坐,抓着献帝的手哭着说:“不能复相活邪?”献帝答:“我亦不知命在何时。”他又对身旁的郗虑说:“郗公,天下宁有是邪?”(天下还有这样的事吗?)最后,伏皇后被幽闭而死,她的两个儿子被毒死,家族受株连被处死的有一百多人。建安二十年(公元215年)正月,曹操立他的第二个女儿曹节为皇后。至此,曹操彻底控制献帝。他的枕边人都是曹操的女儿,他的一举一动,都逃不开曹操的监视。汉献帝虽非昏庸之主,但无用武之地;他虽胸怀治国安民之志,却终生受制于人,这是他最大的悲剧。