公元917年十一月,李存勖在晉陽,一日聽說黃河上冰已經封河,於是說:“打了幾年仗,由於受黃河阻隔不能渡河作戰,今河麵冰封,這是天助我也。”於是立刻啟程回到魏州。
這一年還發生了一件事,那就是五代名將劉知俊被殺。劉知俊降蜀後,王建封他為都招討使,但手下將領都是蜀國舊功臣,不聽從他的命令,因此劉知俊也沒立下多少功勞。蜀王手下有個寵臣唐文扆又多次在蜀王麵前說劉知俊壞話,蜀主王建也擔心劉知俊的才能,對人說:“我死之後你們誰都不能駕馭劉知俊。”十二月初六,下令拒捕了劉知俊,罪名是謀反,將劉知俊押赴碳市砍了腦袋。大名鼎鼎的劉開道就這樣死於莫須有的罪名下。
公元917年十二月,後梁帝朱友貞任命張宗奭為天下兵馬副元帥,又因為賀瑰有平定慶州之功,封賀瑰為宣義節度使、同平章事,不久又任命他為北麵行營招討使。
晉王李存勖回到魏州,有一天到黃河邊打獵,當日天氣很冷,看到河麵冰已經凍得很厚。晉王馬上下令步、騎兵即刻過河向對岸梁軍發起進攻。這時楊劉城(今山東東阿縣楊劉鎮,為重要黃河渡口)駐有三千梁軍,他們在沿河數十裏紮下營寨,晉軍突然發起進攻把沿河寨壘一掃而光。晉軍來到楊劉城下,用蘆葦填平了守城的塹壕,當天就攻下了楊劉城,擒獲守將安彥之。
楊劉城丟失的時候,後梁帝朱友貞正在西都洛陽祭天。做了戶部尚書的趙岩對朱友貞說:“陛下繼位以來尚沒有去南郊祭天,別人會輕視我們,認為我們仍是一般的諸侯。請陛下到西都去行郊祀禮,並謁拜宣陵。”於是朱友貞帶領百官來到西都。祭祀的日子都訂好了,突然傳來楊劉城失守的消息,還有人傳說晉軍已經到了大梁,朱友貞及百官都慌了手腳,隻好停止了郊祀趕回大梁。
公元918年正月,後梁帝回到大梁。敬翔上書勸朱友貞不要隻居深宮,隻與身邊近臣討論國事,應該廣泛聽取老將老臣的意見。又舉出李存勖親冒矢石衝鋒陷陣來激勵後梁帝,並提出自己要上陣效力。朱友貞接到敬翔的奏疏,趙岩、張歸霸等人說敬翔是在發泄怨恨。朱友貞不再理敬翔的奏疏,把敬翔晾在一邊,不再啟用他。
後梁帝派河陽節度使、北麵行營排陣使謝彥章帶幾萬人馬攻打楊劉城,企圖收複楊劉。李存勖親率兵馬來戰謝彥章。謝彥章隻好築起堡壘堅守,並挖開黃河,黃河水蔓延幾十裏,阻止晉軍前進。謝彥章是徐州人,後梁名將葛從周的養子,特別擅長帶領騎兵作戰。
正當梁、晉在黃河兩岸打得不可開交,王建建立的前蜀也發生了不小變化。公元918年六月前蜀王王建病逝,他的兒子太子王宗衍繼位。王宗衍改名王衍,成了前蜀的第二個皇帝。他與他爹王建不同,嗜酒好色,不理朝政,因為他母親徐賢妃得王建寵愛,在太子王元膺被殺後才成了太子進而成了皇帝。
梁將謝彥章掘開黃河阻止了晉軍的攻擊,但是過了一段時間,黃河水漸漸退去。這一天晉王李存勖帶領親兵從魏州出發去楊劉慰問駐守在哪裏的軍隊,他在船上用手中的大槍去探查水的深淺,發現河水隻能沒到槍把。他感到渡水殲滅梁軍的時機到了,就對手下將士說:“梁軍沒有和我們作戰的意誌,隻是想用河水阻止我們的進攻,使我軍士氣低落,我們應當涉水過河向梁軍發起攻擊。”六月二十一日,李存勖帶領親兵首先過河,各路軍隊隨後跟進,向梁軍駐地而去。士兵們卷起衣服抗著鐵槍涉水而進,這一天河水下落隻能沒膝。梁匡國節度使王彥章率軍在岸上抵抗晉軍攻擊,晉軍受到抵抗就向後撤退。梁軍以為晉軍敗了於是也下水追擊,到了河中間隻聽鼓聲大作,晉軍聞鼓返身衝擊梁軍,梁軍抵擋不住,隻好逃回岸上,晉軍乘勝追擊,把梁軍殺得大敗,死傷士卒無數,鮮血把河水都染紅了。謝彥章隻身逃走,晉軍攻占了岸邊梁軍的四座營寨。