司马欣第一次出现在史书中是秦始皇在位时期,在他担任监狱狱掾时,楚地反秦义军的领袖项梁在栎阳县犯法被抓。为了脱身,项梁就请托在蕲县担任狱掾的曹咎自己的旧交来营救自己,而司马欣与曹咎也是好友。曹咎接到书信后二话不说写了一封信给好友司马欣,后来项梁被放,司马欣由此成为项梁的救命恩人。司马欣和曹咎的这种不图回报的无心之举让项梁记住了他们的恩情,为此后曹咎效力于项羽麾下被封为海春侯和司马欣被项羽封为十救路诸侯之一埋下了伏笔。
秦二世二年冬,反秦的陈胜军声势浩大,周文率领数十万大军攻入关中直逼咸阳,随后章邯统帅骊山囚徒70万大破周文。随后司马欣也积极响应,率领当地动员的秦军加入章邯大军。司马欣得到章邯信任后,被任命为长史(大概相当于今天的参谋长或者秘书长),成为了章邯的心腹。
定陶之战,项梁战死后,章邯在秦二世三年(前207年)率兵渡过黄河攻赵,围困赵王赵歇于巨鹿。后来项羽率楚军救援赵国,在巨鹿之战中破釜沉舟背水一战以五万楚军杀的王离的北方长城军团溃不成军。巨鹿之战秦军惨败,内外交困的章邯便司马欣去朝廷请求救兵,而此时的秦帝国,赵高把持朝政,大权在握。入宫求见的司马欣连续三天没被召见,司马欣显然已经猜到了赵高的用意,于是开始返回军中,控诉了赵高把持大秦权柄肆意滥杀无辜的恶行,后来章邯与司马欣投降项羽。
汉元年(公元前206年)二月,项羽分封19路诸侯。因为救项梁和劝降章邯立下大功,司马欣被封塞王,都城栎阳。秦将董翳被封翟王,都城高奴,章邯被封为雍王,都城废丘。以此来遏制刘邦北上的意图。公元前206年,刘邦开始进军镇守关中西部的章邯,一败再败的章邯呗困于自己的都城,章邯兵败被围时,司马欣和董翳选择背叛了西楚霸王项羽,投入到了刘邦的阵营。
汉二年四月,刘邦讨伐项羽,在齐国平乱的项羽得知彭城沦陷后,率领3万骑兵南下,还陶醉在胜利中的刘邦联军被打的瞬间瓦解,刘邦最后仓惶逃跑。此时的司马欣看到楚军大获全胜后,又叛汉归楚,重新成为项羽的部下。汉四年(公元前203年),楚汉两军对峙于广武(荥阳东北),决定亲自率兵回到后方击溃彭越等人的项羽下令曹咎来镇守战略要地成皋,而辅佐他的正是司马欣和董翳。
守城大司马曹咎中了刘邦的激将法出战,半渡汜水时遭到汉军袭击大败,司马欣和董翳无奈之下全部自刎而死。而后刘邦受伤入关,伤势痊愈后的刘邦返回关中栎阳催粮征兵,并将司马欣的头颅挂在栎阳城楼示众,以此来争取关中民心。