刘邦分封子弟造成郡国并立的政策是时代的错误,从巩固刘家天下来看,它虽然能收到暂时的效果,却种下了长远的祸根。文帝时贾谊就指出,当时楚等国已各传子孙二三代,与皇家亲属关系日益疏远,感情淡薄。半独立的王国同集权的皇朝在各方面都存在许多矛盾,相互猜忌,各怀疑惧,叛乱仅只是时间问题而已。他认为王国太强大就好比人患了肿病,一条小腿粗如腰,一根指头粗如腿,怎么能够指挥屈伸呢?所以他提出“众建诸侯而少其力”,主张尽封诸王子弟,使大国分为尽可能多的小国,“令海内之势如身之使臂,臂之使指,莫不制从”,中央才容易控制。另外他又建议文帝把自己的亲儿子安排到要害地区建立大国以便拱卫皇室,说明他还是没有从根本体制上认清问题实质。但是文帝却采纳了贾谊的意见,把太子的同母弟刘武封为梁王,都于战略要地睢阳(今河南商丘),拥有四十多县富庶地区。又尽封齐悼惠王子六人为王,分齐国为济北、菑川、胶东、胶西、济南、齐等六国。
当年刘邦在击灭英布后,封其侄刘濞为吴王,都吴(今江苏苏州),拥有江东五十三县,盛产铜、盐,国富民强。文帝时,吴太子入朝与皇太子发生冲突被误伤致死,刘濞从此怨恨不朝,图谋叛乱。由于文帝优容礼遇,暂时没有发作。景帝即位,晁错用事。晁错认为,诸侯国太强大威胁皇室,应当绳之以法,抓住他们的过失以削夺国土作为惩罚,逐步减弱其势力,才能提高皇权,安定国家。尤其是吴国蓄谋叛乱多年,更应当严惩。他也估计到这样做可能激起变故,但是他说:“今削之亦反,不削亦反。削之其反亟,祸小;不削之其反迟,祸大。”既然是祸,迟发作不如早发作。景帝采纳他的意见,先后削夺赵国的常山郡,楚国的东海郡以及胶西国的六个县。最后在下令削夺吴国的会稽郡和豫章郡时,景帝三年(前154)正月,吴王刘濞带头发兵叛乱。他纠合楚、赵、胶西、胶东、菑川、济南等六国,以诛晁错“清君侧”为借口,亲率吴楚联军二十多万人西征。胶西、胶东、济南、菑川等国合兵围攻仍然忠于汉王朝的齐国,赵国也暗中勾结匈奴,起兵反叛。一时黑云压城,长安城中的高利贷者认为东方战事胜败难知,竟不肯贷款给从军东征的列侯封君,好像汉中央政权已经命在旦夕了。
吴王为了夺取攻汉的胜利,动员了自己国内从十四岁至六十二岁的人统统入伍参战。吴王下令全国说:“寡人年六十二,身自将。少子年十四,亦为士卒先。诸年上与寡人比,下与少子等者,皆发。”除国内出动二十万大军外,并使闽越、东越也发兵相助。吴王召集诸将领商讨进兵计划,大将军田禄伯建议说:“兵屯聚而西,无它奇道,难以就功臣愿得五万人,别循江淮而上,收淮南、长沙,入武关,与大王会,此亦一奇也。”但吴王太子却不同意田禄伯单独行动,怕别有变故,因而便对吴王说:“王以反为名,此兵难以藉人,藉人亦且反王,奈何?且擅兵而别,多它利害,未知可也,徒自损耳。”吴王遂不用其计。吴另一少年桓将军也建议说:“吴军多步兵,步兵利于在险要的地势条件下作战,汉军多车骑,车骑利于在平坦的地形下行动,吴军不应在所过城邑停留,急速占据洛阳的武库和敖仓之粟,夺占山河险要关隘以令诸侯,即使不入函谷关,天下也会基本稳固。如果行动迟缓,汉军车骑至,驰入梁楚之地,我们就会失败。”但吴王等又以他年少无知,而拒绝他的建议。遂决定以一路大军向西北先攻梁地,然后再节节向前发展。周亚夫奉命率三十万大军东征,深知楚军历来剽悍矫捷,战斗力强,很难轻易将其打败。因而向汉景帝建议说:楚国之兵剽悍勇捷,难以很快战胜它,我们应该舍弃梁国,尽量以梁地拖住敌人,并切断敌人运送粮草的道路。这样就可以使敌兵疲粮尽,战而胜之。汉景帝同意周亚夫的计划,以大将军窦婴驻军于荥阳,控制荥阳一带战略要地,阻止吴楚联军西进。周亚夫自率主力向吴楚联军进击,并以另一部兵力向齐、赵等地进攻。
吴王刘濞在作战准备完毕后,即于汉景帝三年(前154)正月,打着“请诛晁错,以清君侧”的旗号,起兵叛乱。先将汉朝所任命官吏统统杀掉,然后亲率大军从广陵北上,西渡淮水,与楚军合兵,继续前进。吴王刘濞为壮大其起兵的声势,制造叛乱的舆论根据,在起兵后即派遣使者,致书胶西王、胶东王、菑川王、济南王、赵王、楚王、淮南王、衡山王、庐江王、故长沙王子,历数汉朝廷任用“奸臣”,削夺诸王侯封地,危及汉宗室安全的“罪状”。然后宣称:“吴国虽然不大,但地方三千里;人虽然不算多,但可出精兵五十万。而且我一向与南越友好相处三十多年,越君王愿意出兵以帮助吴国,又可得精兵三十万。吴国虽然不富,但节衣缩食,积金钱,备兵革,屯聚粮食,夜以继日,三十余年。”刘濞为了鼓舞将士的作战积极性,还宣布:凡抓住汉军大将者,赐赏金五千斤,封万户;抓住列将者,赐金三千斤,封五千户;抓住禆将者,赐金二千斤,封二千户。以下也皆有赏赐。对降城略地有出力者,也给予重赏。
汉景帝听说吴王刘濞等已起兵叛乱,想派人劝说吴王罢兵。这时原吴相袁盎,曾因晁错欲治他的贪污受贿罪,对晁错恨之入骨,即向景帝建议说,诸王起兵,完全是因为晁错,只要杀了晁错,吴楚即可退兵。汉景帝遂杀了晁错,并立即以袁盎为太常,派往吴国,向吴王说明晁错已斩,请吴王退兵。吴王回答说,他已称东帝,拒绝退兵。这时正好谒者仆射邓公为校尉,曾随军征讨吴楚军,返回京师,谒见景帝,景帝问他说:“晁错已死,吴楚能不能退兵?”邓公回答说:“吴王准备叛乱已经数十年,他是发怒于削地,以让朝廷诛杀晁错为名,其用意远不是杀晁错而已。”邓公接着说:“晁错生怕诸侯强大难制,所以建议削地,以加强朝廷的力量,这本来是有利于万世江山的良策,但刚刚实行,晁错便被诛杀,这样,忠臣就无人敢再说话了。”景帝这时才省悟。
吴楚联军首先向西北进攻梁地,攻破梁之棘壁,斩杀梁军数万人,乘胜继续向梁地推进。梁孝王十分惊恐,派遣六位将军率军再与吴军战,梁军溃败。梁孝王数次派人去向周亚夫求救,周亚夫均不救援。吴楚联军又进而包围梁都城。由于梁都坚固,无法攻下梁都,吴楚联军被阻。这时,吴将周丘通过威胁诈谋,劝降下邳,一夜之间得三万兵马,遂向北继续略地,到了城阳,已拥有近十万之众。
太尉周亚夫率军东走,当进至灞上时,赵涉对周亚夫说:“吴王刘濞一向豪富,长期以来搜罗亡命之徒,现在他知道将军即将东出函谷关的动向,必定会在崤山、渑池之间的险要处设置间谍伏兵。用兵贵在神速秘密,将军何不从这里向右进军,经蓝田、出武关,迂回而至洛阳,这样只不过多用一两天的时间,便可直入洛阳的武库,到后敲击战鼓,诸侯发现汉军到达,一定会以为将军是从天而降。”周亚夫遂按照赵涉的建议,率领部将安全到达了洛阳。周亚夫这时高兴地说:“七国叛乱战起,我坐驿车到达这里,没想到会这样安全。现在我控制了荥阳,荥阳以东就没有什么危险了。”周亚夫进至洛阳后,便立即派兵搜索崤山、渑池之间地区,果然抓到了吴王派出的伏兵。于是,便请赵涉当护军。
周亚夫军至淮阳,周亚夫的父亲周勃的故客邓都尉向周亚夫建议说:“吴兵锐甚,难与争锋。楚兵轻,不能久。方今为将军计莫若引兵东北壁昌邑,以梁委吴,吴必尽锐攻之。将军深沟高垒,使轻兵绝淮泗口,塞吴饷道。彼吴梁相敝而粮食竭,乃以全强制其罢极,破吴必矣。”周亚夫很高兴地采纳了邓都尉的建议。周亚夫遂率主力军向东北进军,进占了昌邑,并在昌邑筑垒坚守。这时吴楚军加强围攻梁国,由于周亚夫拒绝派兵支援梁王,梁王便派人上诉于汉景帝。汉景帝诏命周亚夫救援梁王,亚夫仍坚壁不出,只派弓高侯韩颓当等率轻装部队按照预定计划,出淮泗口,切断吴楚联军的后路,绝其粮道。梁王命中大夫韩安国和张羽为将军,以韩安国坚守城池,张羽出战,使吴军受到一些挫折和损失。吴军欲向西进军,但无法突破梁军的防守,吴楚联军胶着于坚城之下,往日的锐气大失。为求速战速决,便转而进攻周亚夫军,两军相遇于下邑,吴楚联军企图寻找汉军主力决战,但是周亚夫仍坚持坚壁不战。吴楚联军由于粮食供应断绝,士卒饥疲不堪,吴王刘濞多次组织部队向周亚夫军挑战,周军拒不应战,吴楚军采取佯攻汉军阵地东南角,实际主攻西北角的战术。周亚夫识破了吴楚军的企图,便加强了西北角的防御,当吴楚军猛攻西北角时,周亚夫军已严阵以待,吴楚军最后的攻击失败,加上士卒疲劳饥饿,于是开始溃乱,吴王刘濞决定率部队撤走。二日,周亚夫率军追击,大破吴楚联军。吴王刘濞丢弃部队,仅率数千人乘夜逃窜。楚王刘戊见大势已去,被迫自杀。周丘自感吴楚联军无力向西北发展攻势,遂退往下邳,途中病死。
吴王率军渡江,退守丹徒,再退走东越,以东越兵万余人,并收聚其残兵,企图重振军威。汉军派人买通了东越,使东越以劳军的名义诱骗吴王刘濞出营,将吴王斩杀。至此,声势浩大的七王之乱的主力军吴楚联军,即告全部失败。济南、胶东、胶西、菑川等诸王和赵王,按照与吴王刘濞的协议,也同时起兵于齐地和赵地。济南、胶东、胶西、菑川等四王起兵后,首先进攻齐王刘将闾军于临淄。齐王本来也预定要参加七王之乱,可能后来觉得事情不妙,退出七王反叛的行列,畏罪而自杀。临淄被围困三个月未被攻破。这时进击齐地的汉军在将军栾布的统率下,与弓高侯韩颓当的援军合兵一处,向围攻临淄四国之军进攻,将四国之军击破,各败退回本国。
在胶西王阴谋叛乱之前,诸大臣即劝阻胶西王不要起兵叛乱,他们认为在胶西为王已经很不错了,吴王虽然与胶西王约定,事成之后,平分天下,但那也是后患无穷。胶西王不听。待兵败退回胶西后,始知后悔已晚。胶西王太子刘德还想再战,打算战败之后,逃入东海。但胶西王刘昂觉得已无任何取胜的希望,遂自请向汉军韩颓当军投降,韩颓当向刘昂展示景帝的诏书:“王其自图。”刘昂看后,自叹说:“如昂等死有余罪。”即自杀身死,太后、太子也皆死。胶东王渠、济南等王兵败后也自杀。郦寄率军进攻赵地,进展也比较顺利。赵王之军节节败退,最后退守都城邯郸,郦寄军包围邯郸城近十个月,后城破兵败,赵王刘遂自杀。这样,七王之乱遂全部被平定。