赵光义率军从镇州出发,六月十九日到金台屯,二十三日到幽州城南,驻扎在宝光寺。
此时,辽军方面,幽州城内有韩德让和耶律学古,城北有耶律奚底和萧讨古,更北靠西的得胜口有耶律斜轸;宋军方面,皇帝御驾亲征。
宋军先锋东西班指挥使傅潜、孔守正巡哨城北,在沙河遇到辽军,与之大战,耶律奚底、萧讨古战败,逃。耶律斜轸没有救援,而是伪装作收容逃兵的态势迷惑宋军,在宝光寺的赵光义,听探马来报,认为辽军现在没有准备好(收容败军,往往会扰乱本来阵容建制,不利作战),立马派军追击。
六月二十六日,赵光义亲临幽州城北,先是率军击退清沙河的耶律斜轸部,而后于六月三十日开始继续攻城。
在此过程中,赵光义近臣找到一辆驴车,拉着赵光义一路南逃,仅用不到一日的时间,跑到了金台屯(来的时候,从金台屯到幽州用了五天时间),令其他退军难以望其项背,因此得了“高粱河车神”的绰号。
沙梁河之战,赵光义两次没有探明军情的情况下,轻率追击,两次败北。此一战,让中原王朝军民开始对比方契丹产生畏惧心理,成为宋辽关系的转折点,在以后宋辽相处的过程中,宋方始终处于下风。