宝庆二年(1226)进士,授新喻主簿。历知余干县、处州、镇江、隆兴府、太平州、临安府、建康府、江陵府及户部尚书、浙西安抚使、江东安抚使、宝章阁学士、明殿学士、资政殿学士等。从真德秀学,宝祐三年(1255)累官至户部尚书兼知临安府、浙西安抚使;继加宝章阁直学士、沿江制置使、江东安抚使,知建康府兼行宫留守兼节制和州、无为军、安庆府三郡屯田使。至建康,即以常例公用器皿钱20万缗支犒军民;削减租税,养鳏寡孤疾之人;招兵置寨,给钱助诸军婚嫁;属县税折收丝绵绢帛,倚阁除免以数万计;兴学校,礼贤才,僚属皆极一时之选。。为方便行人,他搜集旧名或起新名并亲书坊巷名匾额33处。宝佑五年,建康大雪,他自己捐钱30万缗赈济军民。继调荆湖制置,知江陵府,建康百姓怀念不已。
《宋史》记载,景定三年,京城临安发生饥荒,朝庭下诏账恤贫民,但集市上买不到粮食。时知临安府的马光祖知道理宗之弟的荣王府与立为储君的荣王之子的芮府,积有大量粟米,三次前往募捐,但荣王都辞以他事不见。马光祖没有办法,便躺在荣王府的客房里不走,荣王只好出来接见,马光祖厉声说道:“普天之下,谁不知道储君为大王子,今民饥欲死,为保不账恤以收人心?”荣王以仓储空虚相推,马光祖马上从怀里取出一张调查表,说:“大王某仓有粮若干,某某仓又有粮若干,此为调查之实情。”荣王一时语塞,只好许以30万斤粮账恤贫民,一时“活民甚多”。 《西湖游览志》里记载了马光祖的绝妙判词。说的是后来荣王晋升为福王,将福王府空余的房子出租给市民居住,只收房钱不修房子。有些胆大的居民看到房漏不修,就拒付房钱。