魏在桂陵之戰中被齊擊敗,又被秦奪去河西重鎮少梁即今陝西韓城西南、舊都安邑即今屬山西運城,但其實力尚未根本削弱。
周顯王二十五年,魏又召集鄒、魯、宋、衛等國赴逢澤即今河南開封南會盟,自稱為王。齊、楚、韓等國對此不滿,拒不赴會。第二年,魏命龐涓率軍伐韓。
韓求向齊求救,孫臏認為可待韓、魏兩敗俱傷時出兵,既可令韓完全聽命於齊,又有更大的把握勝魏強兵。齊威王在桂陵戰後圖謀繼續利用三晉矛盾,給魏以致命打擊,便采納孫臏的建議,暗中許諾齊將出兵,韓則全力抗魏,五戰俱敗之後全麵倒向齊國。周顯王二十七年,齊以田朌,一說是田忌為主將、孫臏為軍師,發兵救韓。
孫臏仍以攻其必救的“圍魏救趙”戰法,直奔魏都大梁,龐淚聞齊進軍國都,便撤韓圍回師。但齊軍入魏境後不久,知韓圍已解,又還師回齊。
魏軍興兵遣將,以太子申為上將軍,龐涓為將,率軍十萬追擊齊軍,過外黃即今河南蘭考東南時,太子申本欲聽從徐子之議退軍,但龐涓自恃精銳,邀功心切,欲全殲齊軍,並深入齊本土。
孫臏見魏軍來勢凶猛,即因勢利導,以逐日減灶之法示弱。魏軍一路追來,見齊軍遺灶,龐涓果以為齊軍經長途跋涉,兵力已損失大半,不堪一擊。竟不用主力,隻率輕車銳卒晝夜兼程追趕。
齊軍到達馬陵,孫臏見馬陵地勢險隘,道路狹窄,兩旁林木茂密,又估計魏軍必於傍晚到達此地,遂在馬陵設伏,將蒺藜布在道路上,當作溝塹。用戰車和大盾構成野戰的前沿壁壘,令弓弩手埋伏後麵,又在戰車上布置弓弩手和執戟甲士。
魏軍果如期而至,進入齊軍伏擊圈,因連日疾行而疲憊不堪。齊軍則以逸待勞,萬弩齊發,全麵出擊,殲滅龐涓所率部眾,殺龐涓,一說自殺。又乘勝進攻,擄魏太子申,全殲魏軍。
馬陵一戰,齊軍迫使魏軍回救,陷於被動。針對龐涓驕傲輕敵,不過早與之決戰,而以退兵減灶之計調動魏軍,出奇製勝,以作戰指導的高度主動性、靈活性,創造了中國古代戰爭史上一個出色的機動戰例。