公元前209年秦二世胡亥即位。他进一步加重对农民的剥削和压迫,以“税民深者为明吏”,以“杀人众者为忠臣”。他令农民增交菽粟刍藁,自备粮食,转输至咸阳,供官吏、军队以至于狗马禽兽的需要。他继续修建阿房宫,继续发民远戍。徭役征发的对象进一步扩大,农民的困苦达于极点,大规模的农民起义已经到一触即发的地步。
在农民酝酿反秦的时候,潜伏着的六国旧贵族残余势力也在俟机进行分裂活动。秦始皇三十六年(前211年),东郡出现“始皇帝死而地分”的刻辞,就是这种分裂活动的征兆。
秦二世元年(公元前209年)七月,一队开赴渔阳(今北京密云)的闾左戍卒九百人,遇雨停留在大泽乡(今安徽宿县境),不能如期赶到渔阳戍地。秦法规定“失期当斩”,戍卒们面临着死刑的威胁。
但根据出土1975年的《睡虎地秦简》,“失期”仅为城旦的处罚,所以此处存在异议。于是,在陈胜、吴广的领导下,在大泽乡举起了中国历史上第一次大规模农民起义的旗帜。陈胜,吴广他们杀押送他们的秦尉,率领戍卒,用已被赐死的秦公子扶苏和已故楚将项燕的名义,号召农民反秦。附近农民斩木揭竿纷纷参加起义。
起义军分兵东进,主力则向西进攻,连下今豫东、皖北的铚、酂、苦、柘、谯(分别在今安徽宿县,永城、鹿邑、柘城,安徽亳县境)诸县。当他们推进到陈(今淮阳)的时候,已是一支数万人的声势浩大的队伍了。
在起义军的影响下,许多郡县的农民杀掉守令,响应陈胜;特别是在旧楚国境中,数千人为聚者到处可见。一些潜藏民间的六国旧贵族、游士、儒生,也都乘机来归,凭借旧日的地位,在农民军中发挥影响。
游士张耳、陈馀甚至劝陈胜派人“立六国后”,被陈胜断然拒绝。陈胜自立为“张楚王”,分兵三路攻秦:吴广为“假王”,西击荥阳;武臣北进赵地;魏人周巿攻魏地。吴广军在荥阳被阻,陈胜加派周文西击秦。周文军很快发展到车千乘,卒数十万人,进抵关中的戏(今陕西临潼境),逼近咸阳。
秦二世慌忙发修骊山陵墓的刑徒为兵,以少府章邯率兵应战,打败周文军。周巿在魏地立旧魏贵族魏咎为魏王,自为魏丞相,并派人到陈胜那里迎接魏咎。旧贵族的势力很活跃,涣散了农民起义队伍。陈胜缺乏经验,决心不够,眼看着分裂局面的形成。陈胜周围也出现了不团结的现象。
秦将章邯军连败周文,周文自杀。章邯又东逼荥阳,吴广部将田臧杀吴广,迎击章邯,一战败死。章邯进到陈,陈胜败退到下城父(今安徽涡阳东南),被叛徒庄贾杀死,陈县失守。陈胜部将吕臣率领一支“苍头军”英勇接战,收复陈县,处决了庄贾。陈胜作为反秦的先驱者,领导起义只有半年就失败了,但是反秦的浪潮却被他激起,继续不断地冲击秦的统治。
陈胜起义后,旧楚名将项燕之子项梁和项梁侄项羽在吴(今江苏苏州)杀掉秦会稽郡守,起兵响应。不久项梁率领八千子弟兵渡江北上,队伍扩大到六七万人,连战获胜。闽越贵族无诸和摇也率领族人,跟着秦番阳令吴芮反秦。原沛县亭长刘邦和一部分刑徒逃亡山泽,也袭击沛令起事,归入项梁军中。项梁立楚怀王之孙为楚王。以后,项梁在定陶败死,秦章邯军转戈北上,渡河击赵。
这时,代替蒙恬戍守朔方边塞的王离,也率大军由上郡(治今陕西榆林东南)东出,包围了张耳和赵王歇驻守的巨鹿城(今河北平乡境)。楚王派宋义、项羽救赵,派刘邦西入关中。宋义北至安阳,逗留不进。项羽杀宋义,引兵渡漳河,经过激战,解巨鹿之围,被推为诸侯上将军。以后,秦将章邯率二十万人向他投降。
刘邦迂回进入武关,到达咸阳附近。那时秦二世已被赵高杀死,继立的子婴贬去帝号,称秦王,向刘邦投降。刘邦攻占咸阳,秦亡。