赵括为决战做了充分准备:他先是命皮牢(今山西翼城东北)赵军出击,控制沁水,然后挥师向东,与主力一起夹击白起。赵括又命令驻守晋阳的赵军南下,保护皮牢赵军,并威慑河西空虚的秦国本土。做好安排之后,赵括才率主力出击。
决战开始,赵括大举进攻,白起军撤退到沁水东岸,背水死守。然而,此时赵国的皮牢、晋阳两军却都被秦军挡住,没有完成赵括事先的安排,对白起的夹击没有形成。于是赵括军屡次冲阵都无功而返,两军难分高下。赵括见夹击态势没有形成,就想退回长平,但白起军死缠烂打,毫不放松。就在两军难分胜败的关键时刻,赵军的粮食先耗尽了。赵括只好丢车保帅,命一支赵军断后,掩护大军东撤回大本营长平。然而眼看就到了长平,前方忽然出现一支秦军。这是秦国援军,穿插至赵军身后,截住了赵军的去路。此时白起已经追了上来,赵括反而被白起夹击了。此时赵括只有涉丹水东撤,然而就在赵括刚到丹水河边时,意外发生了:丹水突然间变深了,无法徒步涉水而过。原来,秦军另有一军挖渠引来了黄河水,一下子提高了丹水的水位。就这样,赵括陷入重围。
此时战场形势演变成了冲与堵的矛盾,赵括军拼命地要把秦军包围圈冲破一个缺口,长平、晋阳、皮牢的赵军也拼命向赵括靠拢,各路秦军则拼命阻击,另有秦军威胁邯郸,令后方赵军不敢来救。秦军的劣势在于,一点被破,满盘皆输;而赵军的劣势则是粮草断绝。
经过数日大战,赵军仍无法突围。此时赵军早已无粮,战马也已经杀光,甚至到了杀老弱病残为食的地步。赵括想尽一切办法,曾派刺客行刺白起,可惜仅仅刺伤白起,未竟全功。赵括又从赵军中选出一个和自己相貌极其相似的人,穿自己的铠甲,打自己的旗号,率一军向晋城方向突围,而自己则率主力向长平突围。秦军射死假赵括,以为赵括已死,于是对真赵括军进行招降。赵括将计就计,率军诈降,而秦军也未完全放弃戒备之心,双方假受降真会战,最后一场恶战,死伤无数,赵军终因多日无粮,力竭而败,赵括死于乱军之中。赵括死后,各路赵军群龙无首,这才投降,随后被秦军坑杀40万降卒。