陈胜、吴广从大宅乡带着900名去渔阳守卫的贫困农民,实操时斩首,被迫砍树当兵,并以竿为旗,发动了中国历史上第一次农民大起义。
起义军势如破竹,攻下蕲县后,兵分两路,十天左右横扫数百里,又攻占了安徽、河南的五个县城,沿途贫苦农民云集而响应,赢粮而景从,到陈县境内时,起义军已拥有战车七百余辆,骑兵一千多人,步兵数万人。之后,俊雄豪杰建号一呼,天下之士云合雾集,鱼鳞杂袭,飘至风起,各地义军纷起。大致有四股反秦势力:陈胜、吴广为代表的的劳苦大众,项梁、项羽为代表的六国旧贵族残余分子,刘邦、萧何为代表的中小地主和下层官吏,孔甲等“齐鲁儒墨、缙绅之徒”。各种势力聚合反秦,有利于促进秦王朝的迅速瓦解、崩溃,但因各揣心腹事,也为起义军分裂埋下了隐患。当时,这些起义军皆以陈胜、吴广起义军为中心,以“张楚”作为共同旗帜。全国性的起义高潮到来之后,陈胜开始部署军队向西、北、南三面进军,在全国广大地区形成了起义军对秦王朝心脏包围的形势。这其中周文率领的起义军仅几十天就横扫淮河、黄河流域,突破函谷关。九月,周文率大军已进攻到距秦都咸阳仅有百里的戏(陕西临潼境内)。另一支起义军由宋留率领也正由南阳向武关进发。《史记》简约,对于周文为何驻军戏水,并无笔墨。后人多批评周文未能迅速挥师咸阳,是犯了重大的军事决策错误。换个思路想,可能这也是周文无奈之举,因为咸阳附近有强悍的禁卫军和坚固的防御系统,农民军虽有激情,但毕竟缺乏军事素养,单兵战斗力不强,没有其他起义军的配合,周文军取胜的把握不大。李开元认为,以郎中军、卫尉军和中尉军组成的秦京师部队,分别分布于宫殿内外、宫城内外和京城内外,以皇帝为中心,在关中地区构成了一个严密的多层防卫系统,遏止周文军西进步伐的力量,可能就是秦帝国的禁卫军。
起义之初,秦二世只以为是鸡鸣狗盗者扰乱社会而已,谁报告农民造反,谁就被下狱。当起义军攻入陈县时,二世召集博士诸生三十余人商讨对策,有人提出发兵剿灭的建议,也被关进监狱。后来,周文所率的几十万大军进逼咸阳之时,秦二世才大梦初醒,惊恐万状,急问群臣如何是好。少府章邯提出,调集军队已来不及了,请将修骊山墓的刑徒授予兵器,令其与农民军作战。于是,二世大赦天下,令章邯率数十万武装起来的刑徒和“奴产子”向周文的农民起义军发起攻击。章邯坚韧顽强,有勇有谋,曾在秦灭韩灭赵的战争中立有战功,受赏升迁,官至负责秦宫廷事务的大臣少府,此时正在主持骊山陵园的收尾工程。
在此关键之时,反秦队伍内部发生了分裂,或自立为王,或拥兵自重,或拒绝执行命令,使农民起义军遭到极大损失。在这种情况下,孤军深入、后无援军的周文军已处于不利地位。周文自言习兵,但只曾在项燕的军中当过一名占卜吉凶的小官——视日,并无丰富的统兵作战经验,数十万起义军也非训练有素,故在章邯军的疯狂反扑下,节节败退。先退守曹阳,坚持两三个月,又退至渑池奋战十余日,最后,周文自杀,“军遂不战”。章邯在这期间,秦廷为其补充了大量兵员。
在章邯率军向农民军反扑的过程中,秦政府又调回戍守北部边境的三十万大军,在王离率领下,由上郡直接东渡,经太原至井陉,后深入赵地,当时被称为“河北军”,打击黄河以北的起义军。在秦军的全面反击下,起义军内部再度分裂,吴广被杀,进军北方的诸路起义军又割据自保,甚至互相残杀,而南路军也无力回援。如此,周文、吴广两路大军均被击败,起义军的中心陈县就显得兵力十分淡薄。十二月,农民军根据地失陷,陈胜被车夫庄贾杀害,起义形势陷入低潮。
陈胜、吴广身亡兵败后,项梁和项羽率八千江东子弟渡江西向攻秦,在沿途又合并几路义军,使其拥有七万之众,成为起义军主力。后项梁听从范增建议,立楚怀王之孙心为帝,成为各地起义军领袖,而实际领导权则操在项梁、项羽叔侄手里。
秦二世二年七月,项梁在东阿击败章邯军,之后又占据东方重镇定陶。连续的胜利,使项梁开始骄傲轻敌,秦军趁机夜袭定陶,结果义军大败,项梁被杀,定陶失陷。章邯取得定陶后,也开始轻敌,认为楚地兵不足忧,领兵扑向河北赵地。这时,赵王歇与张耳、陈馀正与王离的河北军苦战于巨鹿,章邯兵至,秦军人多势众,将赵王歇所率的义军逼近巨鹿城。王离、涉间率兵将巨鹿围困,章邯筑甬道在巨鹿南运粮。只有陈馀兵在城北,形势岌岌可危。赵军派人到楚求援,怀王派宋义为上将军,项羽为次将,范增为末将,率主力军救赵。起义军与秦王朝统治者开始了决定性的战役。
宋义率领救援部队到安阳(山东曹县)即停留,四十六天还不前进。而陈馀在巨鹿之北筑壁自守,也不敢进援。当时聚集在河北的秦军三十余万,巨鹿城内的赵军在王离等率领的秦军包围下,已处于生死关头。气愤的项羽斩杀了宋义,楚怀王封项羽为上将军,并令英布和蒲将军所部统归项羽指挥。项羽先派英布和蒲江军率二万人马渡漳水救巨鹿,但不能取胜。之后,项羽亲率全部兵马从安阳北上进攻秦军,大军渡河后,破釜沉舟,背水一战,王离军被包围,两军血战九次,不分胜败。项羽切断秦军甬道,断绝其粮草,结果打破秦军,秦军大将苏角被杀,王离被俘,涉闻自杀。
秦军被打得一败涂地,蒲将军又乘胜于漳水南岸打破秦军,项羽破秦军于汙(漳水之流)。章邯在王离军被歼灭后,退守漳河一带,以河内郡为基地,西以河东郡依托,南以三川郡为背靠,利用黄河漕运,就食敖仓,在八个月内顽强抗击诸侯联军,但起义军不断聚拢,章邯军被战略包围,形势严峻。秦军连连失利,内部矛盾又进一步加剧,二世派人责备秦军将领章邯。章邯派人向朝廷请事,而专权的赵高却故意不见。在这种情况下,章邯损兵折将十几万人,又无力挽回局面,走投无路,于秦二世三年七月,只好率余众二十余万人向项羽投降。
秦政府曾对如何剿灭义军有过全面部署,但55万南军始终不至,章邯在义军重重围困下的坚守必被破解,失败不可避免;而秦政府又责备章邯作战不力,对王离军被歼负有重大责任,章邯请求秦政府调兵遣将救援,也被赵高挡回,章邯深知自己的处境,胜败都不会有好下场,为了保全二十万秦军和给自己找条生路,遂投向项羽。巨鹿之战,起义军歼灭了秦军主力,秦王朝已回天无力,灭亡成为定局。