其父司馬攸被其兄晉武帝視為心腹之患。當司馬攸病重時,武帝不信,遣太醫診候,皆言無病。至司馬攸薨,武帝往臨喪,司馬冏哭訴父親的病為太醫所誣,司馬炎詔即誅殺太醫更以司馬冏為嗣。
元康年間,拜散騎常侍,領左軍將軍、翊軍校尉。趙王司馬倫密與相結,廢賈后為庶人后,以功績遷為游擊將軍。但司馬冏并不滿意此地位而有恨色。孫秀察覺,兼且忌憚司馬冏,改遷為平東將軍、假節,鎮守許昌。
當司馬倫篡位后,遷為鎮東大將軍、開府儀同三司,希望以恩寵安定司馬冏。
司馬冏因見眾人對司馬倫心存怨望,便圖謀誅殺司馬倫。
三月,司馬冏起兵反司馬倫,成都王司馬穎、河間王司馬颙、常山王司馬乂等支持響應。司馬冏軍初失利,堅壘自守。當成都王司馬穎軍破司馬倫軍于黃橋,司馬冏即出軍反攻,司馬倫兵敗。晉惠帝復位,司馬冏率甲士數十萬入洛,威震京都。晉惠帝就拜司馬冏大司馬,加九錫之命,備物典策以輔政。司馬颙、司馬穎二王被封高爵,擁兵自重。
司馬冏攬政權后不可一世、卻沒有大志,沉醉于酒色之中,不去朝見惠帝、欠缺臣下之禮,儼然當自己是皇帝。
翊軍校尉李含到長安,詐稱受到皇帝密詔,要河間王司馬颙攻打司馬冏。太安元年(302年)十二月司馬颙經一番利害考量后答應,上表陳述司馬冏的罪狀。興兵討伐首都洛陽,聲稱與當時駐軍在洛陽的長沙王驃騎將軍司馬乂為內應。司馬冏得知消息,派遣其將董艾攻襲司馬乂,司馬乂連同其黨羽百多人,乘車飛奔皇宮,以奉天子的名義攻打司馬冏府第,火燒諸觀閣及千秋、神武門,連戰三日,司馬冏戰敗被斬于閶闔門外。其兒子淮陵王司馬超、樂安王司馬冰、濟陽王司馬英被囚禁于金墉城,司馬冏黨羽多人被夷三族。司馬冏一黨由此滅亡。司馬冏被暴首尸于西明亭三日,沒有人敢收斂。最后其故掾屬荀闿等上表乞求殯葬才獲準。
永興初年,晉惠帝立詔以司馬冏輕陷重刑,以前的功勛不適宜煙沒,乃特赦其三子司馬超、司馬冰、司馬英歸回府第。封司馬超為縣王,繼祀司馬冏,歷任員外散騎常侍。
永嘉中,懷帝下詔,重述冏唱義元勛,還贈大司馬,加侍中、假節,追謚齊武閔王。