漢寧太守張魯命馬超攻葭萌關(guān)。劉備得知,忙找軍師諸葛亮商義,軍師說:"馬超英勇無比,若要除他,只有張飛和趙云二人!"但趙云在外,只有張飛在此。張飛見馬超攻關(guān),大叫著請戰(zhàn)。諸葛亮假裝沒聽見,對劉備說:"馬超來侵犯,唯有云長才能得勝。"張飛聞言不高興,歷述自己以前的戰(zhàn)績后說:"我若不勝馬超,甘愿軍令處罰。"諸葛亮這才答應(yīng)。讓劉備親自帶兵,命張飛為先鋒。劉備領(lǐng)兵來到關(guān)上,馬超三番五次叫陣。張飛屢欲下關(guān)迎戰(zhàn),均被劉備阻攔。后來,劉備見馬超人馬疲乏,令張飛下關(guān)克敵。張飛、馬超大戰(zhàn)一百回合,不分勝敗。這時天色已晚,劉備勸張飛回關(guān),明日再戰(zhàn)。張飛卻大叫:"多點火把,安排夜戰(zhàn),不勝馬超,誓不回關(guān)!"馬超也發(fā)誓:"不勝張飛,誓不回寨!"二人各換一匹馬,開始了挑燈夜戰(zhàn)。又戰(zhàn)二十回合,馬超見不能取勝張飛,佯裝敗走。此時,諸葛亮趕到,略施小計,使馬超陷于困境,然后投降。