在京津地區與奉軍的作戰取得決定性勝利後,命暫編第1師師長彭壽莘率部近6萬人,
跟蹤追擊奉軍至山海關地區,企圖進軍東北。
奉軍張學良部3萬餘人,防守山海關一線,臨山據險修築工事。
奉軍將大炮、機槍等重武器隱蔽在山上鑿溝之中;鑿溝之前為戰壕,步兵隱蔽其中;
戰壕前設木尖樁子與電網,電網之前又設雷區。6月10日凌晨4時,直軍向山海關奉軍陣地發起攻擊,
未能攻破奉軍陣地。9時,奉軍組織敢死隊向直軍發起反衝鋒,直軍被迫後撤。
至下午6時,奉軍反攻的部隊被直軍擊退。6月11日起,
奉軍繼續居高臨下進行全線反攻,直軍堅守陣地,屢次擊退奉軍的反攻。
至6月18日,雙方相互衝擊數十次均無重大進展。直軍傷亡4000餘人。
6月19日,雙方停戰議和。
在東線,交戰之初,奉軍一度掌握主動,但在西線奉軍潰退後,
東路奉軍第一梯隊的旅長鮑德山不聽指揮,按兵不動,
總司令張作相只好指揮部隊全線退卻。第二梯隊司令張學良所部戰鬥力較強,
吳佩孚在西線取得勝利後,立即調其嫡系部隊第3、第26師到東線,
並親自指揮部隊攻擊張學良部。
第三梯隊司令李景林指揮所部在姚馬渡將直軍的進攻擊退,俘虜直軍千餘人。
但當西線戰敗的消息傳來後,東線部隊的軍心為之動搖。直軍乘勢全線出擊,
進攻奉軍第三梯隊司令部駐地馬廠,殲滅奉軍7000餘人,迫使奉軍放棄楊柳青,退守北倉。
奉軍在軍糧城又與乘火車開來的2萬餘直軍發生激烈戰鬥。
因眾寡懸殊,奉軍被迫退往灤州。至此,奉軍在東、西兩線均已告失敗。
士兵犧牲2萬,戰敗逃亡者萬餘,被俘者4萬餘人。
直系王承斌部率其第23師開進天津
時,經灤州英國領事出面調停,以奉軍退回關外,
直軍停止追擊為雙方停戰議和條件。
直、奉雙方代表在停泊於秦皇島海面的英國「克爾留」號軍艦上簽訂停戰條約:
以榆關(今山海關)為兩軍分界線,奉軍撤出關外;直軍除酌留一部分駐防榆關外,
大部撤回原防地。至此第一次直奉戰爭結束。
這次戰爭,先後持續兩個月,但真正大規模戰鬥只有6天(4月29日至5月4日)。
戰爭結束後,直系掌握了北平政府的控制權。