魏在桂陵之战中被齐击败,又被秦夺去河西重镇少梁即今陕西韩城西南、旧都安邑即今属山西运城,但其实力尚未根本削弱。
周显王二十五年,魏又召集邹、鲁、宋、卫等国赴逢泽即今河南开封南会盟,自称为王。齐、楚、韩等国对此不满,拒不赴会。第二年,魏命庞涓率军伐韩。
韩求向齐求救,孙膑认为可待韩、魏两败俱伤时出兵,既可令韩完全听命于齐,又有更大的把握胜魏强兵。齐威王在桂陵战后图谋继续利用三晋矛盾,给魏以致命打击,便采纳孙膑的建议,暗中许诺齐将出兵,韩则全力抗魏,五战俱败之后全面倒向齐国。周显王二十七年,齐以田朌,一说是田忌为主将、孙膑为军师,发兵救韩。
孙膑仍以攻其必救的“围魏救赵”战法,直奔魏都大梁,庞泪闻齐进军国都,便撤韩围回师。但齐军入魏境后不久,知韩围已解,又还师回齐。
魏军兴兵遣将,以太子申为上将军,庞涓为将,率军十万追击齐军,过外黄即今河南兰考东南时,太子申本欲听从徐子之议退军,但庞涓自恃精锐,邀功心切,欲全歼齐军,并深入齐本土。
孙膑见魏军来势凶猛,即因势利导,以逐日减灶之法示弱。魏军一路追来,见齐军遗灶,庞涓果以为齐军经长途跋涉,兵力已损失大半,不堪一击。竟不用主力,只率轻车锐卒昼夜兼程追赶。
齐军到达马陵,孙膑见马陵地势险隘,道路狭窄,两旁林木茂密,又估计魏军必于傍晚到达此地,遂在马陵设伏,将蒺藜布在道路上,当作沟堑。用战车和大盾构成野战的前沿壁垒,令弓弩手埋伏后面,又在战车上布置弓弩手和执戟甲士。
魏军果如期而至,进入齐军伏击圈,因连日疾行而疲惫不堪。齐军则以逸待劳,万弩齐发,全面出击,歼灭庞涓所率部众,杀庞涓,一说自杀。又乘胜进攻,掳魏太子申,全歼魏军。
马陵一战,齐军迫使魏军回救,陷于被动。针对庞涓骄傲轻敌,不过早与之决战,而以退兵减灶之计调动魏军,出奇制胜,以作战指导的高度主动性、灵活性,创造了中国古代战争史上一个出色的机动战例。