宋真宗天禧三年十月十八日(1019年11月17日),司马光出生于光州光山(今河南省光山县)。此时其父司马池任光山县令,所以给他起名光。[1] [2] [3] [44] 六岁时,司马池就教司马光读书;七岁时,司马光不仅能背诵《左氏春秋》,还能讲明白书的要意,为家人陈说其大意。他好学不倦,“手不释书”,达到了“不知饮渴寒暑”的地步。童年时期,司马光还做出了“破瓮救友”这一件震动京洛的事(参见“轶事典故-破翁救友”部分)。[75] [92]
司马光好学强识,既诚实聪明,又十分乖巧懂事,深得父亲喜爱。同时,每逢出游或和同僚密友交谈,司马池总好把他带在身边。耳濡目染,使司马光不论在知识方面,还是见识方面,都“凛然如成人”,受到许多当时的大臣、名士的赏识。司马池辗转河南、陕西、四川各地为官,始终把司马光带在身边。所以,司马光在十五岁以前就跟随父亲走过好多地方,在这些地方访古探奇,赋诗题壁,领略风土人情,极大地丰富了司马光的社会知识。[4]
宝元元年(1038年),二十岁的司马光参加了会试,高中进士甲科。此后至嘉祐八年(1063年)四十五岁时,是他的政治思想、史学思想初步形成的时期。[92]
及第之后,司马光被授为华州(今陕西华县)判官。此时司马池正任同州(今陕西大荔)知州,两地相距较近,司马光经常前往探望父母。在同州,他结识了同科进士石昌言,成为忘年之交。同年,司马光和张存的女儿结婚。[4]
康定元年(1040年),司马光为侍奉在苏州的父亲司马池,求得朝廷改授他为签书苏州判官事。[92] 但在庆历元年(1041年)改元前又因丁母忧而离职,回乡服丧三年。[106] 在此之前,西北党项首领元昊称帝,建立西夏。随后宋夏战争爆发,宋军连连失败。宋仁宗为了加强军事防御力量,要求两浙添置弓手,增设指挥使等官职。司马氏父子认为这样做,并没有什么好处。于是司马光代父亲草拟《论两浙不宜添置弓手状》,从各方面阐述添置弓手增设武官的弊端。[4]