秦至汉初,中国疆域尚小。汉武帝开西域,设东北四郡,尤其是东南西南方向,将原来的少数民族地区都纳入治下,大致奠定了后世版图。汉初时,西南夷种类甚多,君长数以十计,以夜郎为最大;夜郎西面的靡莫之夷种类也很多,数以十计,以滇为最大;滇之北,夷人君长之多亦数以十计,以邛都为最大。这些夷人头梳椎髻,从事农业生产,形成城镇村落。
上述夷人居住之地以西,同师(邑名)以东,北至楪(yè)榆,有嶲(xī)和昆明,此地夷人皆编发为辫,以放牧牲畜为业,随处迁徙,没有固定居所,也没有君长,活动范围至数千里。嶲之东北,夷民君长数以十计,以徙和筰(zuó)都为最大。筰之东北,夷民君长数以十计,以冉駹(máng)为最大。这些夷人有的固定居住,有的为移徙之民,都在蜀郡以西。冉駹之东北,夷民君长数以十计,以白马为最大,与氐族为同源。
战国楚威王时,楚王派将军庄蹻(jiǎo)率兵沿江而上,攻占了巴郡、黔中郡以西地区。庄蹻进至滇池,其地方三百里,附近有数千里肥饶之地。庄蹻以兵力平定此地,使其归属楚国。庄蹻欲归报楚王,而此时秦国攻取了楚国的巴郡和黔中郡,道路断绝。于是庄蹻又返回滇池,改易服饰,遵从当地习俗,自立为滇王。
秦时曾修筑往西南夷的五尺道,并在这些地区设置了一些官吏。等到秦亡后汉朝建立时,把这些属地都废弃了,而以蜀郡与之为界。巴蜀的百姓中常有人偷着越境与夷人做生意,换取筰人的马,僰(bó)人的僮仆、牦牛,因此巴蜀两郡都很富有。
汉武帝建元六年,大行王恢攻打东越,东越杀其王郢以报,王恢因兵威派遣番阳令唐蒙为使者讽喻南越。南越用蜀郡特产枸(读jǔ)酱招待唐蒙,并告诉唐蒙此物沿西北牂(zāng)柯江而来,牂柯江宽有数里,流过番禺城下。唐蒙回到长安后询问蜀郡商人,了解到蜀郡出产枸酱,当地人常偷卖到夜郎。南越想用财物贿赂夜郎使其归附于己,但没有达到目的。
于是唐蒙就向汉武帝上书说,南越王黄屋左纛,地方万余里,不肯臣服于汉,如果从长沙、豫章发兵,水路又多被阻断。我听说西南的夜郎国有精兵十余万,如能从夜郎乘船沿牂柯江而下攻击南越,必能出奇制胜。并且由巴蜀而治夜郎,在那里设置官吏,使其归属汉朝,也是很容易的。
汉武帝遂任命唐蒙为郎中将,率兵千人及后勤保障人员万余,从巴蜀筰关入夜郎,见夜郎侯多同。唐蒙恩威并施,多予赏赐,约定设置官吏,使其子弟为令。夜郎附近小邑之人都贪图汉朝的缯帛,且以为汉到夜郎道路险阻,汉终究不能占有夜郎之地,就姑且接受了唐蒙的要约。唐蒙回京汇报,武帝乃在其地设犍为郡,然后修筑通往牂柯江的道路。
蜀郡人司马相如亦称可于邛、筰等地置郡,武帝就派司马相如以郎中将的身份往谕当地,凡设一都尉、十余县,皆隶属于蜀郡。当时,巴、蜀、广汉、汉中四郡纷纷修筑通往西南夷的道路,数年不能成功。修筑道路的戍卒和后勤保障人员因饥饿劳累和湿热气候而死的很多,西南夷又屡次反叛,朝廷发兵攻打,耗费巨大而无成果。武帝派公孙弘去视察,公孙弘回报说得不偿失。等到公孙弘当了御史大夫,又上书应停开西南,专向朔方。武帝遂下令罢开西南夷,只在夜郎设两县一都尉,而令犍为郡自行完善制度。
汉武帝元狩元年,博望侯张骞出使大夏国归来,言其在大夏时曾见蜀布、邛杖,通过询问得知,这些物产来自数千里外的身毒国(即印度),身毒国在邛地西约二千里,其人与蜀人有贸易。张骞又称大夏在汉朝西南,愿与中国交好,但被匈奴阻隔,如能通过蜀地、身毒往来,对汉朝有利无害。于是汉武帝派使者往西南,欲至身毒国。汉使者到达滇国,滇王尝羌帮汉使者派出十多批人寻找道路,但过了一年多,这些人都被昆明国所阻拦,未能找到通往身毒国的道路。
滇王曾问汉使者,汉朝和滇国哪个大?夜郎国王也曾问过类似的问题。汉朝使者回朝后,盛言滇是西南大国,应让其亲附汉朝,武帝对此非常留意。南越反叛时,武帝通过犍为郡征召西南夷的军队参战。西南夷且兰国君长害怕自己发兵后,旁边的夷人部落会乘虚而入,遂反,杀汉朝使者及犍为太守,汉朝廷原来要调动巴、蜀的八校尉攻打南越,兵未至而南越已平,八校尉乃引军而还,讨诛且兰。当初汉与滇国交往,常被且兰阻断,自此之后道路无阻,汉在当地设牂柯郡。夜郎本来亲附南越,南越灭后,夜郎侯入朝,汉武帝封其为夜郎王。
南越灭后,汉朝诛杀反叛者且兰君、邛君,并杀筰侯,厓駹等部震恐,向汉称臣,请汉朝廷在当地设置官吏。于是武帝在邛都设越嶲郡,筰都设沈犁郡,厓駹设汶山郡,广汉西之白马设武都郡。汉乘兵威派使者谕滇王入朝。滇王有众数万,其东北有同姓部落劳洸和靡莫,皆拒绝汉使。劳洸和靡莫还屡次侵犯汉使者吏卒。汉武帝元封二年,巴蜀汉军攻灭二部,逼近滇国,于是滇王举国降汉入朝。武帝在此设益州郡,赐滇王王印,仍命他管理自己的百姓。
西南夷的君长合计有百数,唯独夜郎和滇的君长得到了汉朝授予的王印。司马迁又感叹说,楚国真是受到上天的宠爱,秦灭诸候,楚之苗裔尚有滇王。汉诛灭西南夷,诸国多灭,唯滇复为武帝所宠之王。汉朝廷于西南夷之地合计共设七郡:犍为、牂柯、越巂、益州、武都、沈犁、汶山。