徐有功出身书香门第,祖父徐文远是国子监博士。徐有功少举明经,后任蒲州司法参军,当时蒲州百姓称其“徐无杖”,因徐有功任官三年,居然升堂时审犯人没有用过一次大刑,他每次用感化教育的方法,令犯罪者惭愧认错,并有不少人从此悔悟自新。
徐有功因民间有佳誉,便不断升迁为司刑丞、刑部郎中、侍御史等职,他长期在司法任上为官,既能下察民情,不肯冤枉一个好人;又好议,敢于发表明辨是非的见解。
永昌元年,武则天以皇后身份临朝执政,后来她又自称“圣神皇帝”,改国号为周,以武姓取代李姓皇帝,这便引起李氏旧臣与李氏宗室的反对,唐宗室李冲、李贞与徐敬业先后举兵讨伐,武则天一方面派兵镇压,另一方面重用酷吏,以此威慑在朝大臣。为了及时了解官吏动向,她命人在全国各地设立告密箱,凡告密有功者,皆加重用。于是,来俊臣、周兴这样一些市井无赖便被提拔为司法要臣,成了徐有功的顶头上司。
由于告密之风日盛,冯敬同告密魏州贵乡县县尉颜余年与当年起兵的唐皇室李冲有关,武则天当即命令来俊臣将颜余年逮捕至京城提审。来俊臣办案好揣摩女皇心思,用严刑拷打,判颜余年为“魁首”(主犯),予以处死。此案转到司刑寺,司刑丞徐有功觉得证据不足,他是一个敢于议政的人,便以武则天颁布的《永昌赦令》为据,认定颜不符“魁首”,至多是个“支党”,结论应该是“流放”。
来俊臣对此很恼怒,而另一酷吏魏元忠也上奏武则天,要将颜余年按“魁首”罪处以死刑,徐有功不服,他当即奏道:“陛下已发布《永昌赦令》,魁首(李冲、李贞)已诛,读颜余年之供词,他仅为漏网之支党。如陛下赦而复罪,又如何面对天下人?”武则天见一位六品小官居然敢反驳她的命令,发怒责问,徐有功却神色自若,慷慨陈词,武则天终于平息怒火,她冷静下来才发觉徐有功议之有理,改死罪为流放。
徐有功在司刑寺任职三年,纠正了不少冤假错案,救人无数。后升迁至刑部秋官员外郎(五品),担当复核判决重任。酷吏周兴一日交徐有功一份唐宗室李仁褒兄弟谋反案,徐有功阅后说道:“兄弟俩练武比箭,岂能定为叛逆造反?”周兴便诬陷徐有功袒护谋反之罪,将徐有功定为死罪。武则天明知徐有功忠心护法,但对他屡次敢于顶撞自己十分不快,于是她虽没同意周兴主意,却就将徐有功削职为民,这次,徐有功连与武则天争辩的机会也没有。
长寿二年,武则天又启用徐有功,任命他为侍御史(六品),他上任后,润州发生一起庞氏案,庞氏原是唐睿宗李旦的岳母,因女儿德妃被武则天处死后,心智失常,在夜间焚香驱鬼,当地官吏薛季昶为迎合武氏,捏造庞氏咒骂武则天,将庞氏判为死刑。徐有功上奏:“滥杀无辜之人,有关大唐法律法度,请陛下三思。”薛季昶乘机挑拨:“徐有功为死囚强辩,目无皇上,应斩首。”徐有功下殿后回家,他有位好友赶来,劝徐有功早想办法逃走,徐有功决不肯一走了之,他坦然回答:“权不能大于法,若我为执法而死,也死而无憾。”
徐有功后被押赴刑场,他毫不畏惧,武则天在一些老臣劝谏下,免其死罪,又将其流放。而那个庞氏也改判为流放。
徐有功在司法任上办案15年,办大案六七百件。他三次被酷吏构陷为死罪,但他三次被赦后也不阿谀奉承,他始终以事实为依据断案,矢志不渝。徐有功一生公正无私,武则天心中对其暗暗佩服,在他死后追赠徐有功为大理寺卿,唐中宗即位后加赠徐有功一品头衔。