司马楚之,字德秀,是晋宣帝的弟弟太常司马馗的八世孙。他的父亲司马荣期晋时为益州刺史,后来被他的参军杨承祖所杀。父亲被杀时,司马楚之十七岁,他送父丧回到丹杨。这时刘裕正在诛灭司马氏,他的叔父司马宣期、哥哥司马贞之同时遇害。司马楚之逃了出来,藏身寺院中,又过江到了汝水颍水之间。楚之从小便有英气,能礼贤下士。刘宋政权建立后,楚之一心想报仇,他聚集了人马占据了长社,归附他的常有一万多人。宋武帝很害怕他,便派了刺客沐谦去谋害他。司马楚之对沐谦十分宽厚。沐谦夜间装病,知道司马楚之一定会来看他,他可趁机下手。司马楚之听说沐谦病了,果然亲自端着汤药来探望,沐谦被他的情意感动了,从席子底下拿出了匕首,将实情告诉了他,从此便跟随了司马楚之。司马楚之以诚待人,很得士人之心。
明元帝末年,山阳公奚斤略取河南,司马楚之派使者去请降,被授予荆州刺史。奚斤平定了河南,将司马楚之管理的地区,分别设置汝南、汝阳、南顿、新蔡四个郡。
太武帝初即位,司马楚之让妻子和儿子居住在内地邺城,不久他应召入朝,授南安大将军,并被封为琅邪王,以抵御宋军。太武帝赐给司马楚之前后部鼓吹。司马楚之在长社打败了宋将到彦之的军队,又与冠军将军安颉攻克了滑台,俘获了宋将朱..之、李元德和东郡太守申谟,俘虏了一万多人。他上疏要求再次进行征讨。太武帝认为军队长期作战过于疲劳而没答应。楚之被召回,任散骑常侍。宋将裴方明、胡崇之侵犯仇池,司马楚之与淮南公皮豹子等率领关中各军打跑了裴方明,抓获了胡崇之,仇池平安地回到他们手中。
皇帝车驾出征蠕蠕,司马楚之与济阴公卢中山等督运粮食供应大军。当时镇北将军封沓逃入蠕蠕,给蠕蠕献策,让他们攻打司马楚之以断绝魏军的粮食供应。蠕蠕就派人去窥测司马楚之的军队,偷了驴子便跑了。有人把丢驴的情况报告给楚之,楚之说:“这一定是前来窥探的贼寇劫去做凭证的,敌兵就要到了。”他立即叫人砍伐柳树,用树围成城,周围灌上水,让树冻住。城筑好后敌军就到了。敌人见司马楚之的军队无法攻打,就跑散了。太武帝听说了此事夸奖了他。司马楚之官拜假持节、侍中、镇西大将军、开府仪同三司、云中镇大将、朔州刺史。司马楚之在边境二十多年,以清廉俭朴闻名。他死后,被追赠征南大将军、领护西戎校尉、扬州刺史,谥号“贞王”,陪葬金陵。司马楚之的长子宝胤与他一同入魏,任中书博士、雁门太守时去世。