劉知遠原來是後晉的河東節度使。在契丹與後晉互相攻伐時,劉知遠采取觀望的態度,據守本境。後晉將領杜重威投降契丹貴族後,一部分後晉軍逃歸河東,增強了劉知遠的勢力,契丹貴族耶律德光攻入後晉都城開封稱帝時,劉知遠有步騎五萬多,他一麵分兵把守河東四境,以防契丹軍侵入,一麵派部將王峻以進賀表為名,三次入開封刺探遼的國情。王峻先祝賀契丹攻入開封;又陳述太原夷夏雜居,戍兵所聚,故劉知遠劉知遠不能親自至開封向耶律德光當麵祝賀,三上貢物之表。遼太宗耶律德光雖知劉知遠刺探之意,但為了拉攏河東勢力而賜劉知遠木柺,以表示優禮與器重。同時派遣使臣問劉知遠:“汝不事南朝,又不事北朝,意欲何所依也?”劉知遠部將以為遼主已猜忌河東,情形危機,勸劉知遠迅速起兵反遼。劉知遠分析了當時的形勢,以為“用兵有緩有急,當因時製宜。今契丹新降晉兵,虎居京邑,未有他變,豈可輕動?且觀其(契丹)所利,止於貨財,貨財既足,必將北去。況冰雪已消,勢難久留,宜待其去,然後取之,可以萬全。”劉知遠以靜製動的計策取得了成功,並為其建立後漢打下了基礎。在耶律德光在開封稱帝後,劉知遠也在晉陽(今山西太原)稱帝。為了收攬人心,劉知遠稱帝而不建國號,並繼續使用後晉高祖石敬瑭所用的年號,以示不忘晉朝。遼太宗耶律德光聽說劉知遠稱帝便下令削奪劉知遠的官爵,並派耿崇美為潞州(今山西襄垣縣)節度使,高唐英為相州(今河北臨漳縣)節度使、崔廷勳為河陽(今河南孟縣西)節度使,包圍河東地區。在與遼的爭戰中,劉知遠以迎晉出帝(即石重貴)到晉陽為名出兵抗遼。其下詔令河東各處官吏,不得搜刮百姓的錢帛貢奉契丹,處死所轄地區殘酷剝奪百姓的契丹族官吏,慰勞表彰農民及武裝抗遼的民眾。劉知遠的措施與遼在開封附近大肆掠奪的政策形成明鮮的對照,因而獲得了民眾的支持,後晉的舊臣武裝紛紛歸附劉知遠,為滅遼出謀劃策。河東境內及其它地方的民眾也紛紛組織起義軍,到處攻殺遼的守軍,搶占城鎮。一些被迫投降遼的後晉官吏此時也殺遼官而降劉知遠,並以此謀求官位。劉知遠在民眾的支持下,先打破了遼的圍攻,他支持潞州權知留後王守恩擊退耿崇美的進攻。遼所派相州節度使高唐英尚未到任,州鎮早已為梁暉占據。會同十年(946年)年末,遼太宗終因中原地區民眾起義此起彼伏,無法控製及契丹人不習慣中原水土等原因而倉惶撤軍北返。劉知遠聞知遼軍撤離開封,則召集大臣商議進取之策,諸將認為應出師井陘(今河北井陘),改取鎮(今河北正定縣)、魏(今河北大名一帶),先平定河北,河北定則河南不戰自服。部將郭威力排眾議,以為出兵河北,兵少路迂,又無應援,難以製勝。他主張先平定陝、晉,後攻汴、洛。劉知遠抓住戰機,依照郭威的計策,委派自己的弟弟劉崇鎮守太原,自己則親率大軍由太原出陰地關(今山西靈石縣西南)至晉(今山西臨汾縣)、絳(今山西新絳縣),安定了陝、晉後方,又委派部將史弘肇為先鋒,攻進汴洛。史弘肇治軍嚴明,兵卒人人奮勇,一路所向披靡。遼守將聞劉知遠進攻,紛紛棄城北逃。洛陽守將劉晞在劉知遠發兵的前兩天便棄城而逃往大梁(今河南開封附近)。劉知遠自太原發兵,僅用了21天便占領洛陽。在洛陽下令改國號為漢,即後漢,仍續用後晉石敬瑭天福年號,劉知遠則為北漢高祖。自洛陽進軍開封,一路暢行無阻。劉知遠入開封後,後晉時的藩鎮相續降漢稱臣,黃河以南的州鎮名義上歸後漢所有。
劉知遠建後漢後,遼將麻答仍磐居黃河以北的恒州(今河北正定縣),對當地人民實行殘酷的統治,深為當地百姓所憎恨。及至劉知遠入開封的消息傳到恒州,當地百姓則群起驅逐麻答與遼人。麻答率遼人逃往定州(今河北滿城縣),與定州遼守將耶律忠(即耶律郎五)合兵。天雄節度使、後晉的叛將杜重威亦與麻答勾結,磐據魏州抗擊後漢。劉知遠率兵親攻魏州,杜重威力竭投降,劉知遠殺杜重威,魏州歸後漢所有。乾祐元年(948年),麻答與耶律忠懾於定州民眾起義,棄城而逃歸遼國,定州也被收複。後晉末陷入契丹的州縣至此已全部為後漢所有。