司马承初拜奉车都尉、奉朝请,后迁广威将军、安夷护军,镇
安定。
光熙元年(306年)因迎
晋惠帝从
长安(今
陕西省西安市)回
洛阳(今
河南省洛阳市)而授游击将军。
永嘉年间,
汉国军队对西晋侵扰频繁,司马承于是偷偷南行,打算依靠镇守
襄阳(今
湖北省襄阳市)的征南将军
山简。但于永嘉六年(312年),司马承到达时山简就逝世,司马承于是继续走到武昌(今湖北省
鄂州市)。后司马承转到
建康(今
江苏省南京市),任时为琅琊王的
晋元帝的军咨祭酒。
建武元年(317年),晋元帝因上一年长安被汉国军队攻陷,
晋愍帝被俘而称晋王。因继承谯王爵位的司马承侄儿
司马邃早前被石勒所杀,晋元帝于是承制封司马承继嗣谯王。
太兴元年(318年),晋元帝因晋愍帝被杀而正式即位为帝,司马承改拜屯骑校尉,加辅国将军,领左军将军。后加
散骑常侍。
当时大将军
王敦掌兵在外,意欲专擅朝政,但晋元帝却任用
刘隗、
刁协等人以削弱
琅琊王氏的影响力,令王敦十分不满,王敦上书晋元帝的表章显得态度傲慢,更令晋元帝畏惧,于是夜召司马承,将王敦表章给司马承看,共谋对策,司马承认为王敦即将起事发难。当时晋元帝打算树立外藩以防备王敦,适逢
太兴三年(320年)
梁州刺史周访逝世,湘州刺史
甘卓转任梁州刺史而令湘州刺史出缺,王敦因而上表由宣城内史
沈充接任湘州刺史,而晋元帝认为湘州位置重要,于是决意派司马承出任湘州刺史。同年任命司马承监湘州诸军事、南中郎将、湘州刺史。司马承前往湘州时,路过王敦所驻镇的武昌,并与王敦宴饮。王敦出言试探,司马承知道王敦用意,于是以东汉
班超“铅刀一割”之语回应。王敦及后向亲信
钱凤表示司马承不知畏惧而学古人壮语,不会有大作为,于是不加阻挠,司马承亦安全抵达湘州。当时湘州残破,司马承自己生活俭约,尽心安抚当地,有能干的名声。王敦见此,又怕司马承日后会阻碍自己,于是假称北伐而征召湘州境内所有船只。司马承知道王敦用意,于是只给一半。
永昌元年(322年),
王敦以讨
刘隗和
刁协之名于武昌起兵,
王敦之乱爆发。王敦当时派遣参军
桓罴劝司马承支持自己,并请司马承为军司,与他一同进兵
建康。司马承知道后决意支持皇室,于是与长史
虞悝、
虞望、
建昌太守
王循、
衡阳太守刘翼等共同盟誓,囚禁桓罴,宣告全州并要进军
巴陵(今湖南
岳阳)。当时
零陵太守
尹奉首先响应并出兵营阳(今湖南省
道县),于是湘州众人都响应,唯王敦姐夫,湘东太守
郑澹不肯,卢悝于是讨伐并将他杀害。王敦知道司马承起兵反对自己,于是派遣南蛮都尉魏乂、将军
李恒、
田嵩等领二万人进攻湘州。司马承且战且守,等待尹奉和虞望的救援。虽然
长沙城池并不坚固且人心惊恐,但司马仍坚拒到
广州投靠广州刺史
陶侃或退守
零陵和
桂阳。但不久,虞望就战死。与此同时,梁州刺史
甘卓因司马承所派
主簿邓骞和
乐道融等人劝说而反对王敦。甘卓写信给司马承,劝他固守,并称要进攻
沔水以断王敦归路并解长沙之围,但司马承答书要甘卓尽力并从速进攻王敦。但当甘卓到猪口后就停滞不前,直至知到
建康失守、
周顗被王敦所杀的消息后更决意撤军,司马承再无援军。而司马承在魏乂的猛烈攻击下死守不降,魏乂于是将王敦送来的朝廷文件射入城内,城内人民得知建康失陷后都十分惆怅惋惜。两军攻守一百多日后,衡阳太守刘翼战死,士卒死伤枕藉,长沙最终都被攻破。司马承于城陷后被捕,由魏乂押送到荆州,而王敦则派荆州刺史
王廙在道上杀害司马承,享年五十九岁。
《
晋书》:1、少笃厚有志行。2、承居官俭约,家无别室。3、时湘土荒残,公私困弊,承躬自俭约,乘苇茭车,而倾心绥抚,甚有能名。