寺少卿。嘉靖四十二年（1563年），蒙古入侵，逼近通州。嘉靖帝命兵部调人，兵部右侍郎蔡汝楠、协理戎政侍郎喻时不能升任，被调往南京，而准备调遣郑晓、杨顺、葛缙，并问徐阶人选。徐阶称杨顺、葛缙是匪徒，请吏部重新调人，于是派湖广参政李燧取代喻时，而命万恭取代蔡汝楠。次年，李燧被罢免，将领推举万恭，万恭则称自己生病；而当起用赵炳然时，万恭则称病好。于是给事中胡应嘉弹劾万恭欺瞒皇帝。万恭上奏解释，并感到不安，请求抵达边疆效力。命兼都察院佥都御史，巡抚山西。上任不久即在龙须墩伏击击退蒙古。之后整顿滨河州县等地，恢复生产