高梁河之戰,宋軍敗得極其狼狽,逃回東京的宋太宗趙光義,預料遼軍必然會南下反攻。於是派兵駐守各個要塞,預防遼軍南進。
他先是任命河陽節度使崔彥進等鎮守關南,再讓都鈐轄劉廷翰、鈐轄李漢瓊戍鎮州,接著讓殿前都虞候崔翰知定州,四麵八方都做好準備,以防遼軍入侵。果然兩個月之後,遼景宗耶律賢命韓匡嗣、耶律沙等率軍從幽州兵分兩路南下,準備進攻鎮州。不久後東、西兩路軍在滿城的西部會合。
當時劉廷翰已經率部下在滿城北部列好了陣,崔彥進也從北向西推進,對遼軍形成了夾擊之勢。在這樣的情形下,宋軍另外幾個將領李漢瓊、崔翰也都領兵到達了滿城,於是他們按照趙光義所傳授的陣圖開始布陣。期間右將軍見遼軍勢盛,私自改了陣法,集中主力對抗遼軍。陣法被破壞之後,崔翰馬上將八陣改變為二陣,前後相接。
宋軍還派了人過去遼營那邊詐降,韓匡嗣信了,準備受降。耶律休哥非常冷靜,認為宋軍無故請降,必然有詐,這反而是準備進攻的信號,應該嚴陣以待。韓匡嗣則認為宋軍新遭大敗,士氣低落,投降是理所當然,聽不進去意見,傳令準備受降儀式。韓老大王是韓德讓的父親,資曆比耶律休哥老得多,耶律休哥苦勸不聽,隻好趕緊回到本部備戰。
果不多時,宋軍大陣開始推進。韓匡嗣可能是第一次見到宋軍步兵方陣,隻見揚塵蔽空,號令聲、步伐聲交替如雷,竟倉皇不知所措。此時崔彥進部又在遼軍背後出現,斷了北歸之路,遼軍頓時大亂。宋軍步騎趁機切入砍殺,遼軍丟棄戰馬鎧甲,往西山坑穀中逃走,宋軍一直追擊至遂城,斬首萬餘級、馬千餘匹,生擒將軍三名,俘獲老幼三萬餘人,軍器甲仗不計其數。韓匡嗣丟棄主帥旗鼓,向東連夜遁入易州。但是耶律休哥、抹隻整軍迎戰,邊打邊撤,徐徐退出了戰場。另一路耶律善補也在雁門關被楊業擊敗,得到韓匡嗣的敗報後急忙撤去。