太康十年(289年)十一月,司马晏受封爵位为吴王 ,以丹阳、吴兴和吴三郡作为食邑。后历任射声校尉、后军将军。
永康元年(300年),司马晏与同母兄淮南忠壮王司马允共同攻打篡位的赵王司马伦。同年八月,司马允失败遇害后,司马伦派人逮捕司马晏交付廷尉处置,想趁机杀死他。侍中傅祗在朝廷上严正地为司马晏争辩,群臣同时劝谏,司马伦便贬司马晏为宾徒县王。 后来封为代王。
永宁元年(301年)六月,司马伦被杀后,司马晏的兄长晋惠帝司马衷下诏,恢复司马晏原来的吴王爵位 ,并任命他为上军大将军、开府,加任侍中。 同年七月十一日,晋惠帝封司马晏的儿子司马国为汉王。
长沙王司马乂与成都王司马颖相互攻打时,司马乂以司马晏担任前锋都督,多次交战。
永兴元年(304年)七月初四日,司马晏与司徒王戎、东海王司马越、高密王司马简、右仆射荀藩等拥奉晋惠帝北伐成都王司马颖。
永嘉年间(307年―312年),司马晏担任太尉、太将军。司马晏为人恭谨朴实,才能不及一般人,在晋武帝司马炎诸子中最为愚钝。年少时因受风疾,视力不正,后来加重,不能朝见。
永嘉五年(311年)六月,汉赵将领刘曜攻入洛阳(今河南洛阳),晋怀帝司马炽在逃往长安途中被俘,司马晏与众多宗室、大臣一同遇害 ,时年三十一岁。司马晏的儿子晋愍帝司马邺即位后,给父亲司马晏上谥号为敬王,追赠为太保。
字号:平度
爵位:吴王
谥号:敬王或孝王
追赠:太保