司马氏是高阳之子重黎的后裔,即夏官祝融。远古至商朝世代袭承夏官这一职位,到了周朝,夏官改称司马。周宣王时,先祖程伯休父平定徐方有功,恩赐司马为族姓。司马懿的十二世祖司马卬随项羽灭秦,受封殷王,建都河内。汉朝时成为河内郡,司马家族世代居住在此地。司马懿的高祖父司马钧为汉安帝时的征西将军,曾祖父司马量为豫章(今江西南昌)太守,祖父司马儁为颍川太守,父亲司马防为京兆尹。司马防育有八子,因字中都有一个“达”字,当时号称司马八达。晋武帝司马炎诏书说:“本诸生家,传礼来久。”司马懿是司马防的次子,少年时期就胸怀谋略。东汉末年,司马懿生于乱世,“常慨然有忧天下心”。南阳太守杨俊素以知人善任著称,司马懿二十岁前,杨俊曾见过他,说他绝非寻常之子。尚书崔琰与司马懿的兄长司马朗交好,曾对司马朗说:“你弟弟聪明懂事,做事果断,英姿不凡,不是你所能比得上的。”
司马懿少年时和著名隐士胡昭关系很好。因与同郡的周生等人结怨而被谋害,胡昭知道后立刻涉险寻找,在崤山渑池之间找到周生一行,请求他们放过司马懿,周生开始不肯,但胡昭哭泣的诚意最终还是感动了他,救下司马懿。建安六年(201年),郡中推荐司马懿为上计掾。当时曹操正任司空,听说司马懿的名声后,派人征辟他到府中任职。司马懿见东汉政权已经被曹氏控制,曹氏又是阉宦之后,不想屈节在曹操手下,便借口自己有风痹症,身体不能起居而不出仕曹氏。曹操不相信,派人夜间去刺探消息,司马懿躺在那里,一动不动,像真染上风痹一般。
建安十三年(208年),曹操为丞相以后,使用强制手段征召司马懿为文学掾。曹操对使者说,他如果还和以前一样躺在床上不出仕,便将他逮捕。司马懿听说后非常畏惧,只得就职。曹操让他与太子往来游处,历任黄门侍郎、议郎、丞相东曹属、丞相主簿等职。而据《魏略》则记载,司马懿好学,曹洪自以为才疏,想让司马懿去帮助他,司马懿耻于和曹洪来往,假装拄拐不去。曹洪记恨司马懿,去跟曹操打小报告,曹操征召司马懿,司马懿立刻扔了拐杖去见曹操为其效命。曹操逐渐察觉司马懿“有雄豪志”,又发现他有“狼顾之相”,心里很忌讳。因此对曹丕说,司马懿不是甘为臣下的人,必会干预我们的家族之事。但因曹丕和司马懿关系很好,总是维护他,而得以无事,于是,司马懿勤于职守,废寝忘食,遂使曹操安心。建安二十年(215年),曹操征讨张鲁,司马懿随军。他对曹操说:“刘备用诡计俘虏刘璋,蜀中之人还未曾归附他就又兴兵争夺江陵,这正是破刘的大好时机。今若在汉中陈兵示威,益州(指蜀地)就会震动不安,再进兵威逼,蜀兵势必瓦解。趁这个机会,一定能大功告成。圣人不能违时,也不能失时。”但是曹操却说:“人苦于不知足,已经得到了陇右,还想得到蜀地,这是人心无足。”所以没有听从司马懿的计策。既而司马懿跟从曹操南征孙权,大破孙权。大军回军之后,孙权遣使乞降,向曹操上表称臣,陈说天命,劝说曹操称帝。曹操说:“孙权小儿这是想要把我放在炉炭上啊!”司马懿对答说:“汉朝的国运将要终结,您十分天下而有其九,还臣服听命于汉。如今孙权称臣,是顺应天人之意。”
建安二十四年(219年),司马懿升任太子中庶子,佐助魏太子曹丕。当时司马懿每次参与谋划,都有奇策,所以为曹丕所信任和重用,与陈群、吴质、朱铄并称“四友”。司马懿转任军司马,建议屯田解决粮食问题,得到曹操的采纳。他指出荆州刺史胡修粗暴,南乡太守傅方骄奢,都不应驻守边防,曹操未予重视。同年,关羽围曹仁于樊城,水淹于禁七军,斩庞德。胡、傅二人果然乘机降蜀。一时间关羽声势“威震华夏”。因汉献帝在许县,距樊城很近,曹操感到威胁,为避关羽锋芒,一度准备迁都黄河以北。司马懿和曹椽蒋济及时劝阻说:“于禁被大水所淹,不是战守上的失误,对于国家的大局并没有大损失,为此而迁都,即是向敌人示弱,又会使淮河、汉水一带人心不稳;刘备、孙权外亲内疏,如今关羽坐大,孙权必定不安,把这件事告知孙权,使他牵制关羽,则樊城之围自解。”曹操从其计,孙权果然派吕蒙袭取公安,关羽被其俘杀。之后曹操认为荆州遗民及在颍川屯田的军民逼近南方的敌对势力,想把他们迁走。司马懿认为:“荆楚之民大多轻脱,轻易移动怕是难以安定。如今关羽刚刚被击破,藏窜逃亡者也在观望时局。如今将那里的人迁徙,既伤当地人的心意,也令想要回来的人不敢复还。”曹操听了他的建议,没有移民。之前藏窜逃亡者果然都复出归化。延康元年(220年),曹操去世,朝野危惧,司马懿管理丧葬诸事,内外肃然,并奉曹操梓宫回到邺城。同年,曹丕即魏王位,司马懿受封河津亭侯,转丞相长史。当时孙权正率军向西。朝臣们认为樊城、襄阳缺乏粮,不能抵御吴军,请召守将曹仁回驻宛城(今河南南阳宛城区)。司马懿则表示:“孙权刚刚打败关羽,正是他想和魏国结好的时候,一定不敢为患。襄阳是水陆交通要地,不能放弃。”曹丕没听其建议,命曹仁放火烧毁二城。后来孙权果然没来入侵。曹丕悔之不及。