景帝三年(前154年),吴王濞起兵广陵(今江苏扬州),有众二十余万,还兼领楚国兵。他置粮仓于淮南的东阳,并派遣间谍和游军深入肴渑地区活动。吴楚军渡过淮水,向西进攻,是叛乱的主力。胶西等国叛军共攻齐王将闾据守的临淄,赵国则约匈奴联兵犯汉。景帝派太尉周亚夫率三十六将军往击吴楚,派郦寄击赵,栾布击齐地诸叛国,并以大将军窦婴驻屯荥阳,监齐、赵兵。
曾经做过吴国丞相的袁盎,建议景帝杀晁错,恢复王国故土,以换取七国罢兵。景帝在变起仓猝的情况下接受了这一建议,处死晁错。暂时居于优势的吴王濞认为自己已经取得了“东帝”的地位,拒不受诏,战事继续进行。
吴楚联军东进,行至梁国(治今河南商丘),遭到景帝之弟梁王刘武的顽强抵抗,吴楚联军并力攻城,攻下梁国南面的棘壁(今河南永城西北)。梁王刘武向朝廷告急,周亚夫认为吴楚联军势大,正面决战难以取胜,献策用梁王军队拖住吴、楚主力,寻找时机切断对方补给,然后伺机击溃叛军,景帝同意了周亚夫的计划。于是周亚夫绕道进军,走蓝田、出武关,迅速到达了雒阳。
梁国被叛军轮番急攻,梁王向周亚夫求援。周亚夫却派军队向东,屯兵于梁国以北的昌邑(在今山东巨野西南),坚守不出。梁王再次派人求援,周亚夫还是不发救兵。最后梁王写信给景帝,景帝又下诏要周亚夫进兵增援,周亚夫还是不为所动,梁王于是任命韩安国与张羽为将军,拼死抵御,与吴楚联军僵持。
梁国城池防守严密,吴兵无法西进,转而奔向周亚夫的军队。结果吴军一败涂地,士卒多饥死叛散。周亚夫派精兵追击,吴王濞率败卒数千遁走,退保长江以南的丹徒(今江苏镇江)。汉遣人策动吴军中的东越人反吴。东越人杀吴王濞。楚王戊也军败自杀。吴楚叛乱起于正月,三月即告结束。
在齐地,胶西等王国兵围临淄,三月不下。汉将栾布率军进逼,胶西、胶东、淄川、济南诸王或自杀,或伏诛。齐王将闾为汉城守有功,但是他曾拟夺取帝位,后来还参预过七国之乱的策划,特别是在被围困时又与胶西王等通谋,因此不能见容于汉,被迫自杀。在赵地,赵王遂撤兵坚守邯郸,郦寄攻之不下。匈奴人知道吴楚兵败,也不肯入汉边助赵。栾布平定齐地诸国后,还军与郦寄共同引水灌邯郸城,邯郸城破,赵王遂自杀。