六月,文帝遣丞相灌婴率8.5万骑兵开赴高奴(今陕西延安),迎击右贤王。右贤王出塞而去。会济北王刘兴居反,汉乃诏击匈奴兵回长安。
汉文帝前元三年(前177),匈奴右贤王背弃和亲之约,率数万大军侵占河南地(今内蒙古伊克昭盟地区),并进袭上郡(今陕西绥德地区),杀略汉民,威胁长安。双方虽未交兵,但这次用兵是西汉自白登之围后对匈奴第一次大规模的军事行动,表明西汉王朝并不甘于和亲政策。
汉文帝前元十四年(前166)冬,老上单于亲率14万大军入侵汉地,前锋直抵岐州雍(今宝鸡凤翔)、甘泉(今陕西淳化西北),距长安仅200里,直接威胁西汉王朝的统治中心。
文帝得报,立即命中尉周谷、郎中令张武为将军,发车千乘,骑十万,屯驻长安附近,防卫京师;又拜昌侯卢卿为上郡将军,宁侯魏遫为北地将军,隆虑侯周灶为陇西将军,东阳侯张相如为大将军,成侯董赤为前将军,大发上郡、北地、陇西等处兵马车骑迎击匈奴,苦战月余,老上单于方退出塞外,而汉军逐出塞即还,不能有所杀。
从此,匈奴日已骄,岁入边,杀略人民畜产甚多,云中、辽东最甚,至代郡万余人。西汉王朝深以为患,不得不遣使者复与匈奴修好和亲。汉文帝后元四年(公元前160年),老上稽粥单于死,其子军臣立为单于,仍以中行说为亲信,积极准备攻汉。
汉文帝后元六年(公元前158年),军臣单于绝和亲之约,对汉发动战争,侵入上郡及云中郡。文帝以中大夫令勉为车骑将军,率军进驻飞狐(今山西上党);以原楚相苏意为将军,将兵入代地,进驻句注(今山西雁门关附近);又派将军张武屯兵北地,同时,置三将军,命河内守周亚夫驻屯细柳,祝兹侯徐悍驻棘门,宗正刘礼驻霸上,保卫长安。
此时,匈奴骑兵已进至代地句注边,边境烽火警报连连告急。汉军经数月调动,方抵边境地区。匈奴见汉军加强了守备,遂退出塞外。
汉文帝第三次防御匈奴,汉文帝后六年冬(即前159年冬,因汉初以10月为岁首),匈奴3万骑入上郡,3万骑入云中,杀略甚多,烽火通于甘泉、长安。
汉文帝命将军令免屯驻飞狐,苏意屯驻句注,张武屯驻北地,以备匈奴;命周亚夫驻扎细柳,刘礼驻扎霸上,徐厉驻扎棘门,以保卫京师。数月后,汉军开赴边境,匈奴军退,汉兵遂罢。
汉文帝后元四年(前160年),老上单于病逝,其子军臣单于即位。
总体而言,受制于国力、统治思想和马匹、武器等具体物质基础,文景时期对待匈奴的入侵并不组织军队主动出击,以避免加重百姓的负担,使恢复不久的正常的经济生活再次受到破坏。