司马光以端明殿学士知永兴军。宣抚使下令分义勇戍守边地,挑选诸军中骁悍勇猛的兵士,招募街市中品行恶劣的少年作为骑兵;抽调民力制作干粮,全部修筑城池高台,使得关辅一带骚扰混乱。司马光极谏说:“公私困乏,不可举事,而且京兆一路都是内郡,修缮城治不是急务。宣抚使的命令,都不敢从命,如果缺乏财物以供军用,我当然要负责任。”因此京兆一路独得免乱。改任许州知州,朝廷催促司马光入京觐见,他没有前往;请求判西京御史台回洛阳,从这以后绝口不论国事。
但是言诏下达后,司马光读之感动流泪,想要沉默却不忍心,就再次陈述六事。又写信责备宰相吴充。
蔡天申任察访使,妄自作威作福,河南尹、转运史像对待上司一样侍奉他;他曾朝拜应天院神御殿,官府单独为他设置一个班次等级,表示不敢与他抗衡。司马光回头对御史台胥吏说:“领蔡寺丞回到他自己的班次上。”胥吏马上领蔡天申站在监竹木务官富赞善的后面。蔡天申为难沮丧,当天就走了。
元丰五年(1082年),司马光忽然得了语言迟钝的病,怀疑自己将要死去,预先写好遗表放在卧室内,倘若情势急迫,就把它交给关系好的人上呈。颁行新官制,神宗指着御史大夫这一官职说:“非司马光不可。”又打算用他做东宫太子的老师。蔡确说:“国事刚定,希望稍稍迟一些时间。”《资治通鉴》没有完成,神宗对此事非常重视,认为该书胜过荀悦《汉纪》,多次催促司马光完篇,并赐给颍王府旧书二千四百卷。等书写成,司马光加官资政殿学士。司马光一共在洛阳住了十五年,天下认为他是真021宰相,老百姓都号称他为司马相公,连妇女小孩也知道他是司马君实。