姬发知道灭商的时机已经成熟,于是向四方诸侯宣告说:“殷有重罪,不可不合力讨伐。”召集诸侯共同伐商。
公元前1046年十二月(商朝的十二月,周朝的一月),姬发率领300辆战车,精选的3000名虎贲之士,45000名甲胄之士,向东进发。十二月下旬,周国军队全部到达盟津渡口,与赶来会师的八个国家一起盟誓。这八个国家分别是庸国(位于今陕西省安康市到湖北省十堰市房县、竹山县一带,公元前611年被楚庄王所灭)、蜀国(今四川CD、广元、重庆市奉节县一带,公元前316年被秦惠王派张仪、司马错伐灭)、羌族(今甘肃省定西市岷县、甘南州临潭县一带,后大部纳入秦国版图)、髳国(今重庆市巴南区一带,后来被古蜀国所并)、微国(今陕西宝鸡市眉县境内,跟随西周灭商,灭商后不久遭到周朝打压,被迫迁入湖北省十堰市竹山县一带)、卢国(今湖北西北部,与彭国毗邻)、彭国(今河南省南阳市一带,春秋初年被楚国所灭)、濮国(今湖北省荆州市石首市一带)等国诸侯进行了会师。
诸侯们都相互激励说:“这一次我们一定要努力勤勉,不能懈怠。”姬发召集众诸侯召开第一次联盟军事会议,发布了******,名为《太誓》:“殷纣荒淫无道,不修政事,只听妇人之言,残酷对待他的臣民,导致天沸人怨,众叛亲离。他抛弃他祖先美妙高尚的音乐,却每天演奏一些****的曲子,用来取悦他的妃子,所以今天,我姬发必须要恭敬地执行上天对他的惩罚。努力吧,战士们,争取一战就把殷纣消灭,而不是等到第二次,第三次。”之后,姬发率领诸侯联军,于十二月二十八日冒雨东进,从汜地(今河南省郑州市荥阳市汜水镇)渡河北上,至百泉(今河南省新乡市辉县市西北)折而东行,于一月(周朝的二月)初四拂晓到达商都朝歌的郊外牧野(今新乡市卫辉市)。
姬发登上战车,左手拿着黄金斧钺,右手举着白牦牛尾装饰的旗帜,用来指挥联军。姬发进行战前宣誓说:“各位诸侯,以及参加远征的将士们,请举起你们手中的武器,跟我宣誓。古人曾经说过,母鸡不能打鸣报晓,如果它打鸣报晓了国家就会灭亡。现在殷纣唯妇人之言是从,不祭祀他的祖先,疏远他的亲族,只是收留重用一些犯罪后逃亡到商朝来的人,任由他们胡作非为,他残害忠良,他压榨百姓,上天已经愤怒了,于是派我来惩罚他。一定要努力,将士们,你看你们多威武,就像下山的猛虎,就像入海的蛟龙,试问又有谁能战胜你们?你们打败了殷纣的将士,也不要杀死他们,让他们为我西方的人服役。但是你们也要努力作战,如果你们不努力,就会遭受杀戮之刑。”宣誓完毕之后,各诸侯国派兵来会合的战车总共4000乘(如此庞大的兵力,后世有争议),在牧野列开了阵势。
当时商朝的精锐部队都在东夷作战,殷纣惊闻周军来袭,来不及调回精锐,匆忙之中将守卫国都的卫戍部队集合了起来,又把朝歌的奴隶、罪犯等全部释放集结,混编了17万人(一说70万人,这个数目似不可信,因为当时朝歌城中的总人口有多少是要打一个问号的),然后开赴牧野,与周军对阵。
一月初五凌晨,双方军队在牧野相遇。周军布好阵势,姬发在阵前庄严誓师,激励将士。姬发派姜尚和百夫长向商朝军队挑战,用精锐部队迅猛地冲击殷纣的军队。商朝的军队虽然人数众多,但却都没有战心,奴隶们痛恨商朝贵族们平时虐待侮辱他们,都想让周国的军队迅速打败商军。于是在周军发起冲锋之后,奴隶全部掉转武器,纷纷倒戈。殷纣所率的正规军被奴隶反冲,立时乱了阵脚。姬发见状,于是指挥大军全力攻击,殷纣的军队混乱之下自相冲击践踏,很快土崩瓦解。
假如当初殷纣在得知周军前来之时,不要集结这些奴隶,而是只用朝歌的卫戍部队坚守城池,发动城中百姓协助防守并争取时间,或许还会等来征伐东夷大军的回援,最终鹿死谁手或许又是另外一个结果。但这一切只是假设,因为历史根本不可能重演。
殷纣见大势已去,在一些亲兵的保护下,杀开一条血路,逃回了城内。周军哪里肯舍,在后紧追不舍,商都朝歌被攻陷。殷纣不甘受辱,返回王宫登上鹿台,穿上一件珠玉衣,****而死。
姬发手持大白旗带领诸侯进入商都朝歌,城中的百姓都在城郊迎候。他委派大臣向殷商百姓宣告说:“上天为大家赐福!”于是商朝百姓一齐向他再拜稽首,姬发也拜礼答谢。姬发进城来到殷纣****的地方,先是朝他的尸体射了三箭,然后下车用轻剑击刺,并用黄色的斧钺斩下了他的头,挂在大白旗上。姬发又前往殷纣的两个宠妾那里,两个宠妾也都上吊自杀。姬发也射了三箭,用轻剑击刺她们的尸体,然后用黑色的斧钺砍下她们的头,把她们的头挂在小白旗上。
之后,姬发回到了军中。
第二天,诸侯国军队开始清除道路,整修并祭祀社神、稷神以及商纣的宫室。在一个占卜确定的良辰吉日,姬发在周公旦、召公、姜尚、毕公、散宜生、太颠、闳夭等人的保护和簇拥下,举行了盛大的祭祀天地的仪式。姬发登上天子之位,宣布革除殷商的天命,并由周接受上天的命令,开始统治天下。
姬发追谥父亲姬昌为周文王,更改了法度,重新制定了历法。并追尊古公亶父为太王,季历为王季。