同じ12日、秀吉は富田において全軍の部署を決定し、すでにその日のうちに高山重友隊が山崎の町を、中川清秀隊が天王山を占拠し、そこで光秀勢との小競り合いがあった。しかし、この日はあくまで先鋒同士の衝突で、本格的な戦いは翌13日に持ち越されたのである。
この合戦の兵力については、高松城攻めのときの秀吉軍は2万5千といわれている。少数の兵士を高松城や姫路城に残してきているが、そのほとんどは山崎に出陣しており、秀吉軍の中核を成していた。これに高山重友・中川清秀・池田恒興・丹羽長秀・織田信孝らの兵も加わって、総勢で4万といわれている。
それに対して光秀方は前述のとおり兵が集まらず、1万6千程度だったという。
13日、光秀は勝龍寺城を前線の拠点として、城から1キロほど西南の御坊塚に本陣を移した。淀城を最左翼、円明寺周辺を最右翼とした布陣である。
この日は朝から雨が降っていた。お互いに動きを警戒して軍を動かさず、午前中は何事もなく過ぎた。戦いが始まったのは午後4時頃といわれており、光秀勢の右翼先鋒、並河易家・松田左近隊が天王山の東麓に陣を張っていた中川清秀・黒田孝高・神子田正治らの隊に攻撃を仕掛けたのが開戦の合図となった。
並河・松田隊は、勝龍寺城の側面の敵を払いのけようとする目的と、あわよくば一度失った天王山を回復しようとしたものといわれる。ところが、この並河・松田隊の攻撃は、光秀勢にとっては全くの裏目に出てしまったのである。中川・黒田・神子田らの軍勢が並河・松田隊を撃退した勢いでさらに進み、光秀軍の主力部隊である斎藤利三隊が池田恒興・加藤光泰・木村隼人・中村一氏らの軍勢に包囲される形となってしまい、乱戦の中で壊滅してしまった。斎藤隊は2千の軍勢で、光秀勢の中では中心的な勢力だったため、これが崩れたことによって、まず前線は光秀の大敗北となってしまった。
合戦の場合、一隊が崩れだしてそれが止められなくなると、全軍総崩れとなることがよくあるが、このときの光秀軍の敗北はまさにそれだった。
斎藤隊が崩れたことによって、光秀本隊は秀吉勢の攻撃を防ぐことができず、態勢を立て直すために、ひとまず勝龍寺城に入った。そこで今度は、秀吉勢はその勝龍寺城を包囲しはじめたのである。
勝龍寺城は4万の大軍の攻撃を支えられるほどの城ではなかった。光秀は、秀吉勢の包囲網が完全に出来あがるまえに、さらに籠城可能な城へ脱出する機会を狙い、日が落ち、暗くなってから勝龍寺城を出て近江国坂本城を目指すことになった。
ところが敗走という混乱状態であるために組織だった撤退になり得ず、文字通り算を乱しての敗走ということになってしまった。
光秀にとっての最大の誤算は、このときの敗走が亀山組と坂本組の2つに分かれてしまったことである。当時光秀には丹波国亀山城と近江国坂本城の2つの居城があったが、敗走先がひとつに絞られていなかった。このことが光秀の周囲から人が減ってしまったひとつの原因であった。
坂本城に入り再起を図ろうとした光秀らの一行は、勝龍寺城を出て久我畷を通り、西ヶ岡・桂川・鳥羽方面へと敗走していった。まとまって逃げては秀吉勢の探索網に引っかかってしまうとの配慮から、光秀自身も、まわりには溝尾勝兵衛ら数人の近臣が付き従うにすぎないという状況であった。
桂川を渡り大亀谷を過ぎ、山科の小栗栖の竹薮にさしかかったとき、光秀は突然、潜んでいた農民の繰り出す竹やりに脇腹を刺された。それに気がついた溝尾勝兵衛が駆け寄ったときには既に虫の息で、勝兵衛の介錯で自刃して果てたのである。
こうして光秀は、信長を本能寺に討ってからわずか11日目で死んでしまったわけであるが、14日には安土城にいた明智秀満が光秀敗報に接して坂本城に入り、翌15日、坂本城にあった財宝すべてを秀吉方の堀秀政に渡したうえで自刃して果てたのである。
17日、光秀の首は本能寺にさらされた。近江国堅田で捕えられた斎藤利三も京都六条河原にて斬られた。