司马绍为东中郎将，镇守广陵。316年，晋愍帝所在的长安被前赵攻陷，晋愍帝出降，西晋灭亡。有鉴于此，317年，司马睿称晋王，建元建武，并立司马绍为晋王太子。318年，司马睿即位称帝，改元太兴，司马绍被立为皇太子。永昌元年（322年）发生王敦之乱，大将军王敦领兵进攻建康并佔领石头城，晋元帝派王导等人进攻石头城但都被王敦击败，司马绍于是打算率领将士与王敦决一死战，即将出发时因遭太子中庶子温峤极力劝阻而没有实行。随后王敦自任丞相并掌握朝政，见司马绍勇而有谋，而且朝野中亦有很高名望，于是打算诬陷他不孝而将他废掉，