衛青字仲卿。他的父親名叫鄭季,是河東平陽人,以縣中小吏的身份給在平陽候·家當差。鄭季與平陽侯的妾衛媼私通,生下了衛青。衛青有同母異父的兄長叫衛長君以及姊姊衛子夫,衛子夫在平陽公主的家中受到了漢武帝的寵幸,因此衛青就冒充衛姓。衛媼長女名叫衛孺,次女叫少兒,三女就是衛子夫。後來衛子夫的弟弟衛步,衛廣都冒稱衛姓。衛青是平陽侯的家人,年少時歸他父親撫養,他父親就讓他牧羊。
鄭季正妻所生的兒子都像奴僕那樣對待衛青,不把他當作兄弟。衛青曾經跟隨別人到甘泉宮囚禁刑徒的居室,有一個受過鉗刑的刑徒給他相面說:「你是個貴人,官職可以封侯。
衛青聽了笑著說:「 我是奴婢所生的兒子,能不挨打受罵就心滿意足了,哪裡有封侯的事呢!衛青長大成年,當上了平陽侯家的騎士,跟隨平陽公主。
建元二年春天, 衛青的姐姐衛子夫得到了漢武帝的寵幸。 當時的皇后,是漢武帝姑母大長公主的女兒,沒有生兒子,嫉妒別人。大長公主聽到衛子夫得到武帝寵幸,有了身孕,就嫉妒她,便派人逮捕了衛青。
衛青當時在建章宮當差,還沒有出名。大長公主就把衛青囚禁起來,想殺掉他。衛青的朋友騎郎公孫敖和其他壯士前去把他劫奪了出來,因此才沒有死。漢武帝聽到這件事,就召見衛青,封他為建章宮監,並加銜侍中。後來他的同母兄弟也顯貴了,幾天之內賞賜的黃金多達千斤。衛孺做了太僕公孫賀的妻子。
衛少兒原來與陳掌私通,武帝召見陳掌使他顯貴。公孫敖從此更加顯貴了。衛子夫做了皇帝的夫人。衛青當上了大中大夫。
元光五年,衛青擔任車騎將軍,攻打匈奴,從上谷郡出兵;太僕公孫賀擔任輕車將軍,從雲中郡出兵;大中大夫公孫敖擔任騎將軍,從代郡出兵;衛尉李廣擔任驍騎將軍,從雁門出兵:每支軍隊各有一萬騎兵。衛青來到蘢城,將數百名敵人斬首。騎將軍公孫敖損失了七千名騎兵;衛尉李廣被敵人捉住,後來逃脫回來了:這兩人本來全都應當被處斬,後來出錢贖罪,被貶為平民。
公孫賀也沒有立下功勞。元朔元年,春,衛夫人生下男孩,被立為皇后。那年秋天,衛青擔任車騎將軍,從雁門郡出兵,以三萬騎兵攻打匈奴,將數千名敵人斬首。
第二年,匈奴入侵殺死了遼西郡太守,擄掠了漁陽郡的二千多人,擊敗了韓安國將軍的軍隊。漢朝廷命令將軍李息攻打匈奴,從代郡出兵;命令車騎將軍衛青從雲中郡出兵,向西一直推進到高闕。於是佔領了黃河以南的地區,到達了隴西一帶,捕獲了數千名敵人、數十萬頭牲畜,打跑了白羊王、樓煩王。於是把將黃河以南地區設為朔方郡。把三千八百戶的封邑封給衛青,封他為長平侯。
衛青被封為長平侯,他的的校尉蘇建作戰有功,朝廷封他為平陵侯。派蘇建修築朔方郡的城池。衛青的校尉張次公作戰有功勞,被封為岸頭侯。
漢武帝說「匈奴悖逆天理,混淆人倫,殘害尊長,欺凌老者,以搶劫和偷竊為職業,在各個蠻夷之國行騙,策劃陰謀,憑藉武力,屢次侵害於邊境,因此朝廷發動軍隊,派遣將領,來討伐它的罪惡。《詩經》不是說過嗎,迅速討伐玁狁,取勝於大原,出動眾多的戰車,到那朔方去築城。現在車騎將軍衛青渡過了西邊的黃河,一直抵達高闕,得到敵人二千三百個首級,將他們的戰車、輜重、牲畜、財產全都繳獲,已被封為列侯。
於是漢軍往西平定了黃河以南地區,巡視榆谿的舊關塞,越過梓領,在北河上架設橋梁,討伐蒲泥,打敗了符離,消滅了敵人迅捷精銳的士兵,捕獲敵人三千零七十一個偵察兵,趕回一百多萬匹馬、牛和羊,保全軍隊而返回。朝廷增加衛青的封邑三千戶。
元朔三年,匈奴入侵殺死了代郡的太守共友,侵入雁門郡並擄走了一千多人。四年,匈奴大規模入侵代郡、定襄、上郡殺死、擄掠了幾千名漢人。元朔五年春,朝廷下令讓車騎將軍衛青率領三萬騎兵,從高闕出兵,命令衛尉蘇建擔任遊擊將軍,左內史李沮擔任強弩將軍,太僕公孫賀擔任騎將軍,代國國相李蔡擔任輕車將軍,都歸車騎將軍衛青統領,向朔方出兵、命令大行令李息、岸頭侯張次公擔任將軍,從右北平郡出兵攻打匈奴。
匈奴右賢王抵擋衛青等人的軍隊,認為漢軍不能到這裡,就喝醉了。漢軍晚上趕到,圍住了右賢王,右賢王大驚,連夜逃走,只和一個寵愛的小妾、幾百個精壯騎兵衝出包圍圈向北逃去。漢軍輕騎校尉郭成等人追趕了數百裡,沒有追上,擒獲十多個右賢王的小王,一萬五千多部眾男女,千百萬頭牲畜,於是帶著軍隊回去了。到達關塞,皇帝派使者持大將軍的官印,就在軍營中任命車騎將軍衛青做了大將軍,各位將軍連同自己的軍隊都歸衛青統屬,衛青確立名號班師回朝。
漢武帝說「大將軍衛青親自率領士兵,軍隊大獲全勝,擒獲匈奴小王十多人,增加衛青六千戶封邑。」又封他的兒子衛伉做了宜春侯,封他的兒子衛不疑做了陰安侯,封他的兒子衛登做了發乾侯。
衛青堅決推辭說:「我有幸在軍隊中供職,仰仗陛下的神靈,軍隊獲得大勝,都是各位校尉努力作戰的功勞。陛下已經加封過我了。我的兒子們還只是嬰兒,沒有什麼功勞,陛下要割地封他們三人當侯,這不是我到軍隊中任職,來鼓勵士兵努力作戰的本意。衛伉等三人怎麼能接受封賞呢!
漢武帝說:「我沒有忘記各位校尉的功勞,如今就準備考慮封賞他們。於是下詔令封護軍都尉公孫敖,都尉韓說,騎將軍公孫賀等人為侯。
這一年秋天,匈奴入侵代郡,殺死了都尉朱英。
匈奴入侵殺死了代郡都尉朱英。第二年的春天,朝廷派大將軍衛青從定襄出兵,合騎侯公孫敖擔任中將軍,太僕公孫賀擔任左將軍,翕侯趙信擔任前將軍,衛尉蘇建擔任右將軍,郎中令李廣擔任後將軍,右內史李沮擔任強弩將軍,都歸大將軍統屬,斬下了數千首級而回師。一個多月以後,又都從定襄出兵攻打匈奴,斬殺了一萬多敵軍。右將軍蘇建、前將軍趙信的軍隊合併後共計三千多騎兵,單獨遭遇了匈奴單于的軍隊,和他們戰鬥了一天多,漢軍幾乎死光了。
前將軍趙信過去是匈奴人,投降漢朝後被封為翕侯,看到情勢急迫,匈奴又誘降他,於是率領剩餘的約八百名騎兵,逃奔投降了匈奴單于。右將軍蘇建的軍隊全部戰死,只有他一人得以逃走,自己回到大將軍那裡。大將軍衛青就蘇建的罪責向軍正閎、長史安和議郎周霸等人詢問「蘇建的罪責應當怎麼判決?
周霸說「自從大將軍出徵以來,從沒殺過部將,如今蘇建拋棄軍隊,可殺他以申明軍隊的威嚴。」正閎、長史安則說:「不對。兵法上說『小股部隊就算再精銳,也會被大部隊所擊敗。如今蘇建以幾千人抵擋匈奴單于的幾萬人,奮力戰鬥了一天多了,士兵全部戰死,不敢有背叛的想法,而自己回來。他自己回來卻斬殺了他,這是教人今後如果戰敗就不要返回啊。因此不該處死他。
大將軍說「我有幸以皇帝親戚的身份在軍隊中就職,不擔心沒有威信,可周霸勸我表明威信,非常不符合我的本意。況且倘若我的職權允許我斬殺有罪的部將,而憑藉我的尊寵卻不敢擅自在國境以外將其誅殺,把一切報告給皇帝,由皇帝自己裁決這件事,據此來顯示做臣子的不敢專權,不也是可以的嗎?
軍官們全都說「好」。於是將蘇建拘送到皇帝所在的地方。衛青率領軍隊進入關塞,停止軍事行動。
趙信替單于謀劃說「漢軍已經越過沙漠,軍隊很疲憊,我們可以坐等著收納漢軍俘虜了。於是把輜重全都運到遠遠的北邊,以全部精銳部隊等候在沙漠的北邊。正當大將軍的軍隊出塞一千多裡時,看到匈奴單于的軍隊正列陣等候他們,於是大將軍下令把武剛車排成環形的陣營,而下令讓五千名騎兵縱馬去抵禦匈奴。
匈奴放了大約一萬騎兵前來。正趕上太陽將要落山,颳起了大風,沙石打在人的臉上,兩軍都看不見對方,漢軍又派左右兩翼部隊繞到匈奴單于軍的後面。
單于見漢軍人多,而士兵、馬匹還強壯,交戰會對匈奴不利,在天快黑的時候,匈奴單于乘著六匹騾子拉的車,在大約幾百名精壯騎兵的保護下,徑直衝開了漢軍的包圍,向西北方逃去。當時天色已黑,漢軍和匈奴軍相互扭打,死傷人數大致相等。漢軍左校尉捉到的俘虜說;匈奴單于已在天沒黑的時候離去,漢軍於是出動輕騎兵連夜追趕,大將軍的軍隊也緊隨其後。匈奴軍隊也都四散逃走了。
天快亮的時候,漢軍行進了二百多裡,沒有俘獲單于,卻捕獲、斬殺了一萬多敵人,於是來到窠顏山趙信城,繳獲匈奴積存的糧食讓軍隊吃飯。
軍隊停留了一天,將趙信城剩餘的糧食全都燒光才返回。漠北之戰擊潰了匈奴在漠南的主力,匈奴逐漸向西北遷徙,十幾年內再無南下之力。朝廷特加封衛青為大司馬。元封五年,衛青病逝諡號為烈。