劉懷珍字道玉,是平原人,漢代膠東康王劉寄的後人。祖父劉昶,在宋武帝平齊後,被任命為青州治中,官至員外常侍。伯父劉奉伯,在宋朝曾任陳、南頓二郡太守。劉懷珍幼年時曾跟隨父到壽陽,有一回豫州刺史趙伯符出來打獵,老百姓都跑去圍觀,而劉懷珍獨自避而不看,劉奉伯覺得他很特別,說:「這孩子將來能使我們宗族發達。」
劉懷珍後來被本州招任為主簿。元嘉二十八年(451),逃亡分子司馬順則聚集一群人在東陽,州里派劉懷珍率領數千人前往討平了他們。宋文帝召去問破賊的情況,劉懷珍讓功不肯當,他的親近之人都覺得奇怪,問他,劉懷珍說:「當年國子尼恥談在河間時的功勞,我豈能把這點小小的勝利掛在嘴上呢!」當時人們都很稱許他。
江夏王劉義恭出鎮盱眙,路上碰到了劉懷珍,在交談中對劉懷珍很器重,便要他來任驃騎長兼墨曹行參軍。不久任命他為振武將軍、長廣太守。孝建初年,任義恭大司馬參軍、直閣將軍。劉懷珍是北州的舊姓。家中蓄養了許多前來依附的人士,他便啟稟皇上願意讓一千個門生來充當朝廷的宿衛,孝武帝大驚,便召取青、冀一帶豪門私附數千人來,士人都懷不滿。後來劉懷珍又隨府轉任太宰參軍。
大明二年(458),敵虜圍攻泗口城,青州刺史顏師伯請求增援。孝武帝派劉懷珍率領步、騎兵數千人趕赴,在麋溝湖和敵虜大戰,連破七座城池。朝廷任命他為建武將軍、樂陵、河間二郡太守,賜爵廣晉縣侯。次年,劉懷珍上啟請求回南齊書去,孝武帝答覆說:「現在邊防需要人才,不能批准你的請求。」竟陵王劉誕謀反,郡中豪民王弼勸劉懷珍響應,劉懷珍便把王弼斬了,並報告朝廷,孝武帝大喜,任命他為豫章王劉子尚的車騎參軍,加龍驤將軍。
泰始初年,升任寧朔將軍、東安、東莞二郡太守,率領龍驤將軍王敬則、姜產步領騎兵五千人討伐壽陽。廬江太守王仲子逃向南方,賊方派偽廬江太守劉道蔚五千人駐紮在建武澗,築三城。劉懷珍派軍中主將段僧愛馬、步兵三百餘人衝擊,將其斬首。帶領部隊到達晉熙,偽太守閻湛堅守頑抗,劉子勳派部將王仲箈領步兵萬人前來援救,劉懷珍派三千馬步兵擊王箈,在莫邪山大破王部,遂進軍壽陽。劉懷珍又派王敬則在橫塘、死虎一帶擊破殷琰部將劉從等四個堡壘,劉懷珍等乘勝追擊,駐兵壽春長羅門。宋明帝嘉獎他的功勞,任命劉懷珍為羽林監、屯騎校尉,將軍仍舊。劉懷珍則請求先派他去把賊眾平定了,辭讓不接受提拔。建安王劉休仁在濃湖與賊對峙,很長時間不能決勝負。明帝便把劉懷珍召回來,任他為前將軍、加輔國將軍,領軍向青山援助攻擊劉胡,事情平定後,劉懷珍被任命為游擊將軍,輔國將軍仍舊。
青州刺史沈文秀不服從朝廷命令,明帝派其弟沈文炳前往宣佈聖旨,讓劉懷珍率馬步兵三千人隨沈文炳同行。還沒到,薛安都引來敵虜,已經攻陷了徐州、兗州,張永、沈攸之又在彭城大敗。朝廷命令劉懷珍帶兵從盱眙經淮陰渡過淮河援救張永等,由於官軍被敵虜追擊,都相繼逃回來了,劉懷珍也只得回來。泰始三年春天,朝廷讓劉懷珍代鎮山陽。
此前,宋明帝派青州刺史明僧詗北征,僧皓便派部將在王城築工事,以逼近沈文秀,壕塹還沒挖成,就被沈文秀攻破了,並繼續攻打明僧詗。明帝便派劉懷珍率龍驤將軍王廣之五百騎兵、二千步卒,沿海前往救援,到了東海,明僧詗已退保東萊,進據朐城,眾心恐懼,有人提議且保郁州。劉懷珍對眾人說:「你們都傳說沈文秀賄賂胡人軍隊,作為外援,我看他們那些人,還不至於到這一步。齊地人士長期以來就很注重名節,如果他們的名聲一傳開,東萊很快就能拿下,怎麼能允許阻止軍隊放慢行動停在這裡呢?」於是進軍到黔陬。偽高密、平昌二郡太守潰敗而逃,劉懷珍傳達朝廷旨意,把沈文炳送到,而沈文秀終究還是不服從命令,焚燒了城郭。老百姓聽說劉懷珍來了,都很高興。偽長廣太守劉桃根率領數千人守衛不其城,劉懷珍帶著部隊駐紮在洋水,眾人都說:「沈文秀現在在境內到處都派有騎兵游擊,應該堅壁防守等待時機。」劉懷珍說:「現在我們人少糧少,我們緊缺而敵人堅固,正應該選拔精銳部隊,殺他個措手不及。」於是派王廣之率領一百騎兵,襲擊拿下了不其城,劉桃根逃走了。偽東萊太守鞠延僧領著數百人佔據其城,並劫留了高麗來獻禮的使者。劉懷珍又派寧朔將軍明慶符與王廣之攻擊東萊,明延僧投降,劉懷珍便讓高麗使者前往京城。沈文秀聽說各城都已失敗,便派使者張靈碩來請求投降,劉懷珍這才回來。
這年秋天,敵虜又入侵齊地,圍攻歷城、梁鄒二城,其游騎跑到東陽來,擾動百姓。冀州刺史崔道固、兗州刺史劉休賓告急。休賓是劉懷珍的從弟。朝廷便任命劉懷珍為使持節、都督徐、兗二州軍事、輔國將軍、平胡中郎將、徐州刺史,封他為艾縣侯,食邑四百戶,督統水軍,步軍四十多萬趕赴救援。聽說二城已陷落,於是便作罷。
朝廷改任劉懷珍為寧朔將軍、竟陵太守,轉任巴陵王征西司馬,領南義陽太守。建平王劉景素主持荊州後,又遷任劉懷珍為右軍司馬,又遷任南郡太守,加寧朔將軍。明帝親筆下詔劉懷珍說:「你性情忠直,我很信任,你在那裡和少年共事,不要太考慮個人利益。景素這孩子還是不錯的,不但能處理問題,也會把事情弄壞,你要經常諫說他。」劉懷珍奉旨。明帝病重時,又下詔劉懷珍說:「你不應該繼續任景素的僚佐,你的才能本來應予更大的委任,現在調你來參與二直衛的負責工作。」趕上明帝駕崩,劉懷珍便任安成王撫軍司馬,領南高平太守。
朝廷對桂陽王劉休范有疑備,中書舍人王道隆宣佈聖旨,任命劉懷珍為冠軍將軍、豫章太守。劉懷珍說:「休范雖有起事的苗頭,但他哪裡敢一下子就發作起來,如果他終於和朝廷為敵,我一定會根據律條消滅他。但現在要讓我去到任,怕是逼著他起疑心而行動了!」堅決請求不去上任,於是任他為黃門郎、領虎賁中郎將、青州大中正。桂陽王反叛,朝廷加劉懷珍前將軍,在石頭防守。又任他為使持節、督豫、司二州、郢州之西陽軍事、冠軍將軍、豫州刺史。建平王劉景素反叛,劉懷珍派兒子劉靈哲領兵趕赴京師。升明元年(477),進號征虜將軍。
沈攸之在荊楚,朝廷討論對他有懷疑,劉懷珍派冗從僕射張護前往郢城,向世祖(蕭賾)表白自己的忠誠,並獻計獻策,後來沈攸之起兵,眾人都說沈攸之會沿流直下,劉懷珍則對僚佐說:「沈攸之一向驕躁自大,虐待楚人,他必將在中南齊書流一帶設兵耀武,聲言要劫持幼主,絕對不敢長驅而下來決勝負。」於是派兒子劉靈哲率領馬步兵數千人保衛京師。沈攸之派使者許天保來說動劉懷珍和他聯合,被劉懷珍斬了,並將人頭送給了太祖(蕭道成)。太祖又把它送去給沈攸之看。劉懷珍進號左將軍,移封為中宿縣侯,增加食邑六百戶。沈攸之圍攻郢城,劉懷珍派遣建寧太守張謨、游擊將軍裴伸穆統率蠻、漢軍兵一萬人出擊西陽,大破叛軍前鋒公孫方平數千人,繳獲他們大量武器。劉懷珍晉陞平南將軍,督統南豫、北徐二州,增加食邑到一千戶。
當初,在孝武帝時代,太祖任舍人,劉懷珍任直閣,二人早就相識。劉懷珍請假回青州,皇上有匹白馬總馬,好咬人,不能騎,便送給劉懷珍作告別。劉懷珍回報給皇上一百匹絹。有人對劉懷珍說:「蕭君此馬不能騎,所以才給你的,而你回報他一百匹絹,不是太多了麼?」劉懷珍說:「蕭君寬宏正大,豈能白要人這點絹。我正要把自己的身名交給他,豈能計較錢物的多少?」
太祖輔政期間,考慮到劉懷珍任朝官的資本還不多,便於升明二年,調劉懷珍來京任都官尚書,領前軍將軍,讓他的第四子寧朔將軍蕭晃代理豫州刺史。有人疑慮劉懷珍不會接受代理,太祖說:「在我還沒做官時,劉懷珍便對我一片赤誠,何況在今天,豈會有別的想法?」蕭晃都出發一兩天了,這些疑慮的議論還沒止息。皇上便派軍中主將房靈民帶著上百名騎兵追去護送蕭晃。對靈民說:「有人說劉懷珍一定會有不軌舉動,但我對他一向信任,一定不會的。你和他是同鄉,所以讓你去,不僅是護送新刺史,也兼迎接舊刺史呢。」劉懷珍回到朝中來,被任命為相國右司馬。建元元年(479),轉任左衛將軍,加給事中,改封霄城侯,增加食邑二百戶。次年,加散騎常侍。
敵虜寇掠淮、淝一帶,朝廷任命劉懷珍以本官加平西將軍,假節,率軍西往駐紮在巢湖,給壽春作出援助之勢。劉懷珍年紀老了,考慮到率領禁旅比較辛苦,請求給他個清閒職務,於是轉任光祿大夫,常侍之職仍舊。這年冬天,敵虜又寇掠朐山,朝廷又任命他為使持節、安北將軍,本官仍舊,率兵前往救援。還沒至,那邊已經沒事了,劉懷珍又解除了安北將軍、持節。
建元四年,劉懷珍病重,上表請求解除職務,皇上特別下詔優待他,批准了他的請求,並考慮另行授予適當的職務。這年夏天,劉懷珍去世,當時他六十三歲。留下遺言要求葬禮從簡。世祖(蕭賾)即位後,追贈劉懷珍為散騎常侍、鎮北將軍、雍州刺史,謚號「敬侯」。