蜀亡,曹奂进司马昭为晋王,再封十郡,并前共二十郡。司马昭奏复五等爵。咸熙二年(265)夏,曹奂命晋王司马昭戴天子冕冠;设天子旌旗;乘天子车舆;出入如天子,有人警戒清道;享用天子舞乐;司马炎为晋太子。曹奂给晋王司马昭的待遇跟献帝给魏王曹操的待遇几乎一模一样。曹操距驾一步之遥而仙逝,曹丕继而亲御;司马昭仅剩一陛登顶而归西,司马炎从容入殿。秋,司马昭薨,司马炎袭王位。冬,曹奂知天禄永终,禅位于司马炎。司马炎改元泰始,国号晋。司马氏籍贯河内温县,属晋地,其祖世典周史,春秋入晋。故司马昭封晋公,封邑大致为晋地。昔三家分晋,今晋将一统三国。改封曹奂为陈留王。除汉魏禁锢,宗室王公自治封国,并预朝事。异姓功臣上封至公爵,这是为了拉拢。
晋泰始年间,司马炎先后下诏为王凌、王经、邓艾等恢复一些名誉。曹芳终因昏淫失位,故王凌谋废立不足为过,赦免其后;王经坐曹髦死,然守志可嘉,以其孙为郎中;邓艾有功勋,受罪不逃刑,以其孙为郎中。这也是在学曹丕为孔融恢复一些名誉的做法。
泰始五年(269),司马炎有灭吴之志,以羊祜都督荆州诸军事。羊祜出镇荆州,绥怀远近,垦田积谷,甚得江汉人心。羊祜建议可密使益州刺史王浚造舟舰,以备顺流伐吴。司马炎从之。咸宁二年(276),羊祜上疏请求伐吴,谓吴已呈亡形,大晋全线出击,三月之内,必克之。司马炎深纳之,中书令张华、尚书杜预亦赞成,然太尉贾充、中书监荀勖等多谓不可。四年(278),羊祜因病回京,向司马炎面陈其计,宜趁孙皓暴虐之时伐之,一旦其死,更立贤主,则难图之。司马炎善之。羊祜病故,临终举杜预自代。司马炎遂以杜预为镇南大将军,都督荆州诸军事。
五年(279)秋,王浚上疏伐吴。贾充、荀勖仍谓不可。又杜预表请,张华固劝,司马炎终许之。冬十一月,司马炎下诏大举伐吴:镇东大将军司马伷督徐州诸军向涂中,安东将军王浑督扬州诸军向横江,建威将军王戎督豫州诸军向武昌,镇南大将军杜预、平南将军胡奋督荆州诸军向江陵,龙骧将军王浚督梁、益二州诸军浮江东下,太尉贾充为大都督,总统众军,东西凡二十余万。贾充不得已受命,南屯襄阳。
太康元年(280)正月,司马伷夺涂中,王浑取江西。二月,王浚连克秭归、西陵、夷道、乐乡,杜预占江陵,胡奋拔公安,王戎破蕲春、邾县。吴军守将非死即降。司马炎下诏:王浚东下,与胡奋、王戎共平夏口、武昌,直捣建业;杜预南征衡阳、零陵、桂阳等郡。王浚等遂进破诸城,乘风破浪。杜预扫平荆州南境,分兵向东。贾充等认为可见好收兵,不宜轻进。司马炎不从,他已看到胜利在望。孙皓遣张悌、沈莹等率众三万渡江作战。军至牛渚,沈莹曰:“晋水军浮江而下,必至于此。宜畜众力,待来一战。若胜之日,江西自清,上流可顺势收取。今渡江逆战,胜不可保,若或摧丧,则大事去矣。”张悌曰:“吴之将亡,贤愚所知,非今日也。吾恐晋水兵至此,众心必骇,不可复整。今宜渡江,以决战力争。若败,则同死社稷。若胜,则北敌奔走,兵势万倍,西寇不忧不破也。若如子计,恐行散尽,相与坐待敌到,君臣俱降,无复一人死难者,不亦辱乎!”(《三国志·孙皓传》注引《襄阳记》)两人的说法看似都有理,只要获胜一方,有望扭转全局。其实吴军已经丧胆,放在哪里都不会顶事,张悌心知肚明,只求死节。吴军渡江,王浑大败之,张悌、沈莹战死。张悌以身殉国,自谓慷慨壮烈,无所复恨,实际没有什么意义。王浚至三山,孙皓遣游击将军张象率水师万人迎战,张象望旗而降。
三月,孙皓穷蹙请降,王浚先行受之。司马炎遂完成一统。
晋臣对是否大举伐吴主要有两派意见:以羊祜、张华、杜预为代表的一派认为吴已呈亡形,晋兵资足用,征伐时机成熟;以贾充、荀勖为代表的一派则认为晋尚未全安,吴纠众负险,为深根之寇,未可尽克。三国战事频仍,历次战事都会出现战与不战的争论。孙子兵法云:知已知彼,百战不殆。但真正做到这一点很不容易。主战者往往认为已兵强马壮,占有优势,对手不足为虑;止战者则常常感到尚民贫国虚,不宜劳费,敌寇未有衅隙。判断正确可获利,推算错误则不免有失。
从晋伐吴来看,显然,主战派提议充分,止战派见地不足。除此二论外,还有一个代表人数极少但却不乏洞识的观点。尚书左仆射山涛曰:“自非圣人,外宁必有内忧,今释吴为外惧,岂非算乎?”(《资治通鉴·晋武帝咸宁五年》)山涛不欲战,不是像贾充那样觉得不到时机,而是认为时机到了也不去攻取,存之为警惕,不失为一种避免外宁而生内忧的谋略。山涛是私下说的这番话,司马炎可能没有听到。他即使听到,恐怕也不会听之。
司马炎承祖父及伯、父之遗风,如愿以偿,平定天下。但是,天下太平后,他遂疏于政术,耽于游宴,除曹魏宗室之锢后,又解外戚之禁,开始宠爱后党。逮至末年,传位有偏,死后遂至外戚擅杀,宗王作乱,四世天下分裂。望帝王改变私天下是不可想象的,但说其在老小中择个像模像样的应该不很难,那样,大概会避免一些乱子,会把香火传的远些。