大臣箕子见纣王实在闹得不像话,进宫去劝谏。纣王一怒之下,下令将箕子剃了光头,关到后宫做奴隶。比干去为箕子说情,纣王竟命武士将他剖胸剜心,说是要看看他这个装假正经的圣人到底长了几个心眼。微子看到纣王实在无药可救了,他不愿亲眼目睹商朝的灭亡,就带着家眷逃离了朝歌,隐居起来了。
周武王得知商朝王室的情况,知道纣王已经众叛亲离,商朝的气数已尽,于是便正式出动了复仇大军。武王的军队有兵车三百乘、精兵五万人,由周武王和军师姜尚统帅,一路向东进发。
周军正在前进,忽然被两个白发苍苍的老人拦住了去路。武王和姜尚上前一问,才知道两人一个叫伯夷,一个叫叔齐,是北方的孤竹国人,原是仰慕武王的德政前来投奔的,听说周军要去灭商,认为臣子不能犯上,因此要武王罢兵。姜尚见是两个不识时务的迂老头,便不和他们争论,只叫士兵将他们拉开后,便命令军队继续前进了。
周军于当年年底来到黄河边。黄河正好封冻,大军踏冰渡河,顺利地抵达孟津。四方诸侯闻讯,也都纷纷带了军队赶到孟津与周军会师。
第二年初,周军的五万精兵与号称八百路诸侯的联军浩浩荡荡地继续东进,二月上旬便抵达了朝歌附近的牧野(在今河南汲县)。周武王在牧野与各路诸侯誓师。誓师大会上,武王历数了纣王的暴政与罪状,宣布自己是奉天命出师伐纣,同时规定了作战的纪律——不准抢劫骚扰百姓,不许杀害俘虏,勇敢杀敌者有奖,临阵逃脱或后退者处死。
誓师以后,伐纣大军便以高昂的士气准备进攻朝歌。这时纣王才着慌起来,连忙组织军队抵抗。但朝歌的守城军队不多,他只好临时抱佛脚,将城内的大批奴隶和前几年与东夷的战争中抓来的俘虏统统武装起来,开往前线。纣王亲自率领这支号称有七十万人的杂牌军,来到牧野与武王的联军对阵。 两军在数量上虽然很悬殊:联军总共不超过十万人,而纣王的商军有七十万,但联军精神抖擞、士气旺盛,而纣王军队中的奴隶和俘虏则恨透了这个暴君,巴不得他失败。更加可悲的是,纣王到这时还耍小聪明,他让奴隶和俘虏们冲在前面,自己的士兵只在后面压阵督战。于是,两军一接触,战场上便出现了戏剧性的场面——商军中的奴隶和战俘,纷纷举着戈矛,调转身去,杀向纣王自己的军队。商军的前队倒戈,再加上周军的勇猛冲杀,纣王的军队顿时土崩瓦解,溃不成军。纣王在几个亲信的保护下返身逃进朝歌,还未来得及关闭城门,周军已潮水般冲了进来。
纣王见大势已去,便逃到鹿台上,点火自焚而死。商朝就此灭亡。
周武王灭纣以后,在离丰京二十五里外的沣水东岸,建造了一座气势宏伟的新都,定名为镐京(今陕西西安西),宣布自己为天子,并尊他的祖宗古公父为太王,祖父季历为王季,父亲西伯昌为文王。从此便开始了中国历史上的西周时期。