三國時,漢中大量人口曾被曹操強行遷徙到關中、洛陽一帶,《三國誌·武帝紀》和《三國誌·張魯傳》曾記載了這段歷史。
漢獻帝劉協建安二十年(公元215年)初,魏公曹操,親率10萬大軍進攻盤踞漢中的張魯。三月到陳倉。五月,武都河池的氐王竇茂眾萬餘人,「恃險不服」,曹軍經過激戰,攻克了河池,打通了南下的道路。七月,曹操主力到達勉縣陽平關(今水磨灣)一帶。
此時,張魯的弟弟張衛,帶領大將楊昂、楊任和5萬兵馬,依托陽平關南北二山之間的險要地形,修築了長達十餘里的防禦工事。曹軍稍作休整,開始猛攻。由於地形險要、防禦堅固,曹軍連攻數日,毫無進展。
曹操於是假裝撤退,以麻痺防禦的張魯部隊。果然,張衛等人得知曹軍攻關不下,已經全線撤退,就放鬆了戒備。於是,曹操派兵進行夜襲。正巧半路將數千隻野糜驅趕衝入了張衛的營壘,導致其防禦工事的損毀,曹軍借勢鼓角齊鳴,趁虛而入,給張衛造成了曹軍主力全線突破的假象,張衛棄陣而逃。史書稱此役:「天祚大魏,魯守自壞,因以定之。」
陽平關攻克後。漢中危在旦夕。張魯決定逃向巴郡(今巴中)。臨走時,有人建議燒燬漢中等地的倉庫,但是張魯認為:「本欲歸命國家,而意未達。今之走,避銳鋒,非有惡意。寶貨倉庫,國家之有。」於是把所有的倉庫加以封存,完好留給了曹操。
曹操兵不血刃,一舉佔領漢中。之後,巴七姓夷王樸胡、邑侯杜濩舉巴夷子民來附,巴郡正式歸附於曹操。於是曹操分巴郡,以樸胡為巴東太守,杜濩為巴西太守。
十一月,張魯舉家從巴中歸降。曹操感念張魯棄守漢中留下大批糧草、財物之功,任命他為鎮南將軍,以客禮相待,封張魯為閬中侯,食邑一萬戶,還與張魯結為兒女親家。後世道教徒稱張魯為「張鎮南」源於此。至此,漢中戰役終告結束。此役,曹軍自三月到十一月,共歷時九個月,消滅了割據漢中地區的張魯集團和武都一帶的氐王竇茂,控制了甘肅南部、陝南大部以及巴蜀的北部地區。這次出征,應是曹操一生中最後拓展的一塊地盤。漢中的奪取,為後來曹魏收復巴蜀打下基礎。
十二月,曹操留征西將軍夏侯淵駐軍漢中,拜丞相長史杜襲為駙馬都尉留督漢中軍事,自己率大軍北返鄴城。撤離時,曹操接受雍州刺史張既建議,為防止張魯東山再起,「太祖拔漢中民數萬戶以實長安及三輔。」曹操除帶走了張魯家族,還強行遷徙漢中百姓數萬家到長安、洛陽、鄴城。後又令杜襲再次遷徙漢中民眾8萬人到洛鄴。當時,不少五斗米道徒也甘願隨張魯遷徙。至此,「漢中之民減半,」曹操兩次從漢中掠走了大量人口。後劉備雖得漢中之地,卻失去了寶貴的人力資源