由於漢中相距許都較遠,加上曹操控製的東漢朝廷無所適從,因此無暇顧及漢中,隻得采取睜眼閉眼的安樵手段,拜任張魯為鎮民中郎將,領漢寧郡太守。這一年春季,有人在地下挖到一枚玉印,眾人便以"天意下凡"為由,要求張魯自封漢寧王。張魯欲順從,但其功曹閻圃則勸諫他千萬不可,否則會招來禍患。張魯聽之,放棄稱王。
公元212年,劉備與劉璋反目,雙方打得難解難分。為了趕走或打敗劉備,劉璋屈膝求請張魯助他對付劉備。張魯不計前嫌,派大將馬超馳援。劉備在看罷張飛與馬超勢均力敵的博弈後,十分喜歡馬超的勇武,欲予招用。諸葛亮就用金錢買通張魯手下楊鬆,離間張魯與馬超,最後劉備不僅得了馬超,還多了數千鐵騎。麵對馬超這股力量的反戈威逼,劉璋心虛,於公元214年示降劉備。氣得張魯對劉備牙根瘞瘞。
蒞年,不滿張魯賜奉噲違的曹操,親率十萬大軍西征漢中。聞知曹軍兵銳,張魯欲降曹操,但其弟張衛不肯,率兵堅守要隘賜平關,曹軍雖然力攻,但久難拿下。拖不起時間的曹操下令撤軍,不想曹軍在慌不擇路回撤過程中,意外誤入張衛的指揮部,於是曹軍改撤為攻,一下子奪下賜平關。
聽說賜平關丟了,張魯復萌降意。但閻圃勸他,說你現在投曹,曹操一定不會重用你,不如先到少數民族地界暫棲,再與曹操談判。張魯認同。撤前,有人提議把倉庫中難以帶走的金銀財寶放火燒了。張魯阻道:"我已有歸順朝廷之意,今天離去,隻是避其鋒芒,倉庫寶貨,應歸國家所有。"督令部下將所有寶物妥藏完畢,方才離開。
劉備聽說張魯逃亡,聽從黃權建議,遣派黃權前去迎接。張魯得知此情,憤怒地說:"我寧為曹公附屬,也不願做劉備的座上客。"
曹操仿學劉備收馬超之招,買通見錢眼開的楊鬆,離間張魯與手下大將龐德,致龐德走投無路降曹。接下去楊鬆又把親自出城征戰的張魯堵在城外,協助曹操俘虜張魯。已知張魯保護財寶過程的曹操,不僅沒有為難張魯,反而任命其為鎮南將軍,封閬中侯,食邑一萬戶。張魯部下除楊鬆被斬,其他皆予續用。不久張魯舉家遷往鄴城,曹操封張魯五子與閻圃等人為列侯,又讓兒子曹宇娶張魯女兒為妻。
公元216年,張魯去世,謚號原侯,葬於鄴城。但有人稱,道力無邊的張魯,實卒於公元245年。另有《真誥》載,"五鬥米道係師"張魯曾在公元259年復生,大笑而亡。公元1308年,元武宗孛兒隻斤海山追封張魯為"正一係師太清昭化廣德真君"。
有學者認為,傳世《老子想爾注》的作者,應為張魯,而非張陵。張魯門徒眾多,至東晉時,五鬥米道發展至北方和中原地區。