天祐十七年(920年),河中节度使朱友谦攻取同州(治今陕西大荔),叛梁降晋,结果遭到刘鄩的围攻,遣使向李存勖求援。李存勖命符存审、李嗣昭、李建及出军援救,在同州、渭河两次大败刘鄩,并追击至奉先(治今陕西蒲城)一带。河中镇从此归附于晋国。
天祐十八年(921年),成德军将张文礼煽动兵变。李存勖迫于形势,授其为成德兵马留后。不久,河中、昭义、横海、成德等十一藩镇,一同遣使劝进,请李存勖建国称帝,被李存勖拒绝。八月,李存勖命阎宝征讨成德镇,围困镇州(治今河北正定)。
张文礼惊惧病死,其子张处瑾接掌军事,继续负城顽抗。义武节度使王处直勾结耶律阿保机,引契丹军南下,意图背叛李存勖,结果被义子王都囚禁。王都继任节度使,不久便被契丹军围困在定州。
耶律阿保机率领契丹所有军队南下,空国入寇。天祐十九年(922年),李存勖率领五千骑兵先进,打退契丹军,擒获契丹君主的儿子。契丹逃跑时沙河桥狭冰薄导致很多契丹军溺死。契丹军退至望都。李存勖进军望都,打的契丹大败。契丹撤退时遭遇大雪,人马无食,死者相属于道。
但与此同时,晋军在镇州与后梁的交战中却连连失利,损兵折将。阎宝攻城受挫,羞愤病逝。继任主帅李嗣昭、李存进相继战死。而梁军则趁虚反扑,攻克卫州、新乡等地,重新夺回河北重镇相州。是年九月,镇州终因久被围困,粮尽力穷,被符存审攻破。张处瑾及党羽张处球、高濛、李翥等皆俘送魏州处死,张文礼也被劈棺戮尸。李存勖又兼领成德节度使,将成德镇直接纳入晋国管下。
天祐二十年(923年)四月,李存勖接受诸镇劝进,在魏州称帝,改天佑二十年为同光元年。他沿用“唐”为国号,又追赠父祖三代为皇帝,与唐高祖、唐太宗、唐懿宗、唐昭宗并列为七庙,以表示自己是唐朝的合法继承人,史家称之为后唐。当时,后唐辖有魏博、成德、义武、横海、幽州、大同、振武、雁门、河东、河中、晋绛、安国、昭义等十三个节镇、五十个州。
后唐建立的同时,仍面临着严峻的形势。契丹不断侵扰幽州,兵锋直逼河北。潞州守将李继韬叛附后梁,梁将董璋急攻泽州(治今山西晋城),意图吞并昭义镇,直接威胁后唐西都太原的安全。
李存勖为了扭转战局,决定趁梁军东面防守空虚之机,出兵奇袭郓州,以切断梁军右翼,再伺机进图汴州。同光元年(923年)闰四月,李存勖命李嗣源率五千步骑,连夜冒雨渡河,一举袭破郓州。朱友贞听闻郓州失守,命王彦章率军阻止唐军西进。李存勖命朱守殷严守德胜,自率亲军进屯澶州。
五月,王彦章出兵杨村渡,攻克德胜南城,继而顺河东下,攻打杨刘城。他打算先隔断河北唐军与郓州的联系,再图收复郓州。而李存勖则命朱守殷放弃德胜北城,装载军需器械浮河而下,协助李周固守杨刘城。两军各自沿河一岸疾进,边行边战,互有胜负。不久,王彦章进抵杨刘城下,挥军强攻,昼夜不息,并以巨舰九艘横亘河津,阻拦唐军增援。他屡攻不克,只得退屯城南,筑垒连营,以阻击唐军渡河。
六月,李存勖亲临杨刘,一面命唐军出营挑战,牵制梁军兵力,一面命谋臣郭崇韬领兵奔赴博州(治今山东聊城东北),在黄河东岸修筑新城,以接应郓州唐军。王彦章率军急攻博州新城,还用十余艘巨舰置于黄河中流配合作战。
郭崇韬据城坚守,李存勖亦率军自杨刘增援。王彦章只得撤军,退保邹家口。李存勖与郓州李嗣源重新恢复了联系。七月,王彦章复攻杨刘,再次被唐军击败,遂撤师西归,退保杨村,不久便被召回汴州。段凝接任主帅。
八月,朱友贞部署四路反击:命段凝攻澶州、董璋攻太原、霍彦威攻镇州、王彦章攻郓州,打算向后唐发动总攻,但因兵力分散,造成汴州防守空虚。他还命梁军掘开滑州(治今河南滑县)南面的黄河大堤,以阻止唐军进攻汴州,但同时也将梁军主力阻隔在决河以北。
九月,梁将康延孝投降后唐,将后梁军情尽数告知李存勖,建议唐军趁虚袭取汴州。而李嗣源则在郓州附近大败王彦章,俘获梁军将校三百余人,迫使梁军退保中都(治今山东汶上)。
十月,李存勖自杨刘渡河,进抵郓州,并以李嗣源为前锋,攻破中都,俘杀王彦章。当时,诸将都认为应先攻占兖州等地,再乘机而动。李嗣源则坚持趁虚袭汴的战略。李存勖命李嗣源率前军倍道兼程,向汴州进发。是月初九日,李嗣源抵达汴州,挥军攻城。朱友贞,梁将王瓒开城投降。李存勖于同日抵达,由大梁门进入汴州,后梁正式灭亡。