司马保年少时有文采,喜好著述写作。起初被封为南阳国世子。
永嘉五年(311年),太傅
司马越因司马模不能平定安抚关中地区,就表奏征召他回朝担任
司空。将军淳于定劝说司马模不去接受征召,司马模采纳了他的建议,上奏表派司马保担任平西中郎将、东羌校尉,镇守
上邽(今甘肃天水)。秦州刺史裴苞抗拒司马保的到来。司马模派帐下都尉
陈安攻打裴苞,裴苞投奔安定太守
贾疋。同年,晋怀帝
司马炽被
前赵(
汉赵)俘虏,司马模也战败被杀。司马保随之继承南阳王的爵位。
永嘉六年(312年),贾疋去世,裴苞又被前凉
张轨所杀,司马保于是完全控制了
秦州的地域,自称大司马,秉承旨意设置百官。
陇右的氐、羌部族都依从于他,张轨之子凉州刺史
张寔派使节贡献。建兴元年(313),晋愍帝
司马邺继位,任命司马保为右丞相、大都督、侍中、都督陕西诸军事。建兴三年(315年),进位为
相国。
不久,
陈安投奔司马保,司马保命令他统率精兵勇士一千余人去讨伐
羌人,对陈安宠幸待遇优厚。司马保的部将张春等人妒忌,诬陷陈安有二心,请求除掉他,司马保不同意。张春等人就埋伏刺客刺杀陈安,陈安受伤,跑回
陇城,派使者到司马保处,朝贡不断。
建兴四年(316年),晋愍帝被迫投降前赵,晋朝帝位虚悬。司马保有称帝之意,但
司马睿先后于建武元年(317年)称
晋王、
太兴元年(318年)称帝,是为晋元帝。
大兴二年(319年),司马保亦自称晋王,改年号为
建康,设置百官,但并不臣服于司马睿。而陈安自称秦州刺史,先后投降前赵、
成汉。当时上邽发生严重饥荒,士民困迫,张春护送司马保前往南安的祁山。张寔派遣韩璞率领步兵、骑兵五千救援司马保,陈安退守绵诸,司马保回到上邽。不久,司马保被陈安进逼,张寔派部将宋毅救援,陈安才退军。
大兴三年(320年)正月,前赵皇帝
刘曜率军进攻陈仓,司马保部将王连战死,杨曼逃奔南氐。刘曜进而攻取草壁,
路松多逃往陇城。刘曜又攻取阴密,司马保恐惧,奔往桑城。张春筹划侍奉司马保逃奔前凉,张寔派遣部将阴监带兵迎接司马保,名为护卫,实为阻拦。
闰三月,司马保部将张春、杨次和别将杨韬不和,劝说司马保杀死杨韬,并且请求攻打陈安,司马保都没听从。五月,张春和杨次软禁司马保,并将他杀死,时年二十七岁(晋书则记载其因病去世)。
司马保身高体胖,曾自称体重八百斤,好睡觉,喜欢读书,但糊涂懦弱,缺少决断,因此被杀。司马保有阳痿的毛病,不能与女子交合,因此没有儿子,张春立宗室子弟司马瞻为王世子,自称大将军。司马保的部众离散,逃奔到前凉的有一万多人。陈安上表刘曜,请求征讨司马瞻、张春等人。刘曜任命陈安为大将军,进攻司马瞻、张春等人。张春逃奔枹罕,司马瞻投降陈安,陈安把他送交刘曜,刘曜将他杀死。陈安抓住杨次,在司马保灵柩前将他斩首,用来祭奠司马保。陈安用对待天子的礼节把司马保安葬在上邽,谥号元王。
房玄龄等《
晋书》:①“少有文义,好述作。”;②“保体质丰伟,尝自称重八百斤。喜睡,痿疾,不能御妇人。”
司马光《
资治通鉴》:“保体肥大,重八百斤,喜睡,好读书,而暗弱无断,故及于难。”