1980年代から1990年代初頭にかけて、上海鉄路局は3回にわたり鉄道部に対して、上海～香港九龍間の直通旅客列車運行開始を要求したが、車輛不足などの理由によって棚上げされた。その後も上海鉄路局は上海～広州間、南京～広州間、杭州～広州間で運行される3本の旅客列車の利用状況を分析し、1995年7月27日、鉄道部にその調査結果を報告した。この時の上海鉄路局の調査によると、上海～香港間の旅客流動は年間120万人で、そのうち67万人が航空、53万人が鉄道を利用していた。1996年7月、香港返還によって中国本土～香港間の移動需要が高まることを予測した上海鉄路局は、滬港直通列車の運行開始を計画していることを鉄道部に報告した。同月、上海市人民政府は鉄道部に対して上海～九龍間の特快列車運行開始について書翰で問い合わせた。1996年8月、鉄道部は専門チームを立ち上げて、香港の九広鉄路公司と複数回にわたって交渉を行った。その結果、同年12月に当時香港九広鉄路公司社長であった楊啓彦と上海鉄路局局長鄧金華は上海で「北京、上海—九龍直通旅客列車規則」（北京、上海-九龙直通旅客列车办法）に署名した。その後、双方で列車編成、運行時間、荷物輸送や切符の販売方法、価格など細かい調整を行い、概ね合意に至った。1997年3月26日、当時鉄道部部長であった韓杼濱は「北京、上海—九龍直通旅客列車運行開始に関連する諸問題について」（关于开行北京、上海—九龙直通旅客列车有关问题的请示）という報告書を国務院に提出した。これに対して国務院は迅速に対応し、上海鉄路局に対して1997年7月1日の香港返還前までに滬九直通列車の運行を開始するように指示した。国務院からの指示を受けた上海鉄路局は、5月11日に滬九直通列車の試運転を上海～九龍間で行った。そして5月19日、滬九直通列車及び京九直通列車の運行が開始された。当日午前、鉄道部党組副書記で副部長である孫永福、上海市副市長夏克強、香港九龍鉄路公司代表及び財界関係者400人あまりが参加し、上海駅で記念式典が挙行された。孫永福、夏克強とメダルを授与された列車長の3人が滬九直通列車第1列車のテープカットを行い、午前8時04分、第1列車は上海駅を出発した。運行開始当初の滬九直通列車の乗務員は上海鉄路局上海列車段（現：上海客運段）が担当し、列車番号は99／100次であった。車輛には1997年当時の最新型である25K系客車が充てられ、列車の編成は16輛（うち3輛は広州東駅止まり）編成で、定員は448人であった。停車駅は杭州東駅、金華西駅、鷹潭駅、向塘駅、株洲駅、衡陽駅、郴州駅、韶関駅、広州駅、広州東駅、常平駅の13駅で、常平駅では約1時間停車し、その間乗客は荷物を携帯して一旦下車し、中国の出入国審査を受けた。運行時間は九龍行きが29時間06分（08:04発翌日13:10着）、上海行きが28時間18分（15:00発翌日20:18着）であった。九龍鉄路公司と上海鉄道局は、滬九直通列車のメインターゲットを時間に余裕のある観光客に定めており、1997年当時上海～九龍間の正規運賃は硬臥車（2等寝台車）が627香港ドル、軟臥車（1等寝台車）が825香港ドル、高級軟臥車（特等寝台車）が1039香港ドルであった。そのため九龍鉄路公司は、乗車率60%で損益分岐点に達すると予測していた。2001年10月21日、第四次大提速（ダイヤ改正）が行われ、列車番号がK99次（九龍行き）、K100次（上海行き）にそれぞれ変更された。2003年、検疫総局、鉄道部、公安部、海関総署は4つの部署の合同委員会で会議を行った結果、京九、滬九直通列車の旅客の出入国審査及び荷物の税関検査について、従来は東莞駅で各検査を行っていたが、9月1日から広州東駅～深圳駅間を走行中の車内で行うように変更することが決定した。この決定によって、広州東駅から出入国、税関、検疫などの係官が深圳駅まで乗車するようになり、乗客は東莞駅（常平駅）で一旦下車する必要がなくなったため、滬九直通列車の運行時間は1時間近く短縮された。その後、同年10月1日に上海駅出入国旅客ターミナルが完成し、乗客はそれぞれ起終点の駅で出入国審査を受けることになった。そのため杭州東駅、鷹潭駅、衡陽駅、郴州駅、韶関駅での停車及び旅客取扱いは取りやめられ、上海～九龍間の運行時間は25時間に短縮された。これ以降、乗客は上海駅での出国審査後、中国をすでに出国したことになるので、九龍行きの車輛は厳重に封鎖の上隔離され、途中駅での下車は認められなくなった。滬九直通列車運行開始から2009年8月末まで、上海駅の出入境管理局は2000あまりの列車と57万人の旅客に対して検査を行い、そのうち違法な物品の持ち込みや持ち出し、外国人による不法入国などの摘発数は600件強になる。2004年1月、韶山9型電気機関車が牽引する上海行き滬九直通列車（K100次）が京広線白石渡駅附近を走行中、機関車の故障によって動けなくなった。その後、韶関機務段所属の韶山6B型電気機関車が隣の坪石駅にいたため救援に向かい、当該の列車は郴州駅、衡陽駅に停車しつつも運行を続け、数時間遅れで株洲駅に到着した。同じ年の2004年11月11日から2006年9月までの間、浙贛線電化工事の影響で、滬九直通列車の運行時間が3時間延長された。2006年7月29日、上海鉄路局と九広鉄路公司合弁の中鉄快運株式会社（中铁快运股份有限公司）が設立された。中鉄快運は「K99/100次列車管理専門チーム」（K99/100次项目管理工作小组）を立ち上げて、滬九直通列車の荷物車を利用した運輸事業を開始した。2006年10月より、上海鉄路局と九広鉄路公司は個人旅行者と家族旅行者を対象とした割引運賃制度を開始した。これは切符購入時に帰りの切符も同時に購入することで10%割引きするというもので、さらに閑散期には個人客で20%、4人以上の団体客なら最高で40%まで割引きされ、片道切符でも10%割引きされることになった。この割引制度は（2015年）現在でも続いている。2007年4月18日、第六次大提速によって滬九直通列車は特快列車に格上げされた。列車番号も九龍行きがT99次、上海行きがT100次に改められた。この時のダイヤ改正で滬九直通列車の運行時間は約24時間から約20時間に短縮された。さらに2008年1月には、滬九直通列車の車輛と牽引する機関車が更新された。この時導入された25T系客車は、南京浦鎮車輛廠で2007年に新造されたもので、最高時速は160kmであった。その直後、滬九直通列車は中国雪害の影響を受けた。1月28日に九龍を出発した上海行きT100次列車は、1月31日深夜2時06分、62時間遅れで上海駅に到着した。これは1997年の運行開始以来、最長の遅延となった。2009年7月1日には、滬九直通列車は滬昆線内で直達特快列車並みの時速160km運行を開始した。これにより、滬九直通列車の運行時間は1時間短縮され、上海～九龍の所要時間は18時間45分となった。2010年5月15日、上海万博の開幕によって、香港の団体旅行客による滬九直通列車の需要が高まった。同時に中国人の香港、マカオ旅行ブームも起きていたことから、上海鉄路局は滬九直通列車の増結を決定し、5月15日から2号車と3号車の間に硬臥車を1輛増結されることになり、滬九直通列車の定員は412人から478人に増加した。同年5月23日、江西省撫州市で滬昆線列車脱線事故が発生し、その影響で滬九直通列車は2008年以来の重大な遅延が発生した。5月23日の事故発生時、上海行きT100次列車は事故現場の1駅手前である新余駅に緊急停車した後、京九線、銅九線、寧銅線及び宣杭線へ迂回して運行が続けられた。同時に機関車の運用について臨時調整が行われ、T100次列車は韶山9型電気機関車に南昌駅まで牽引された後、南昌駅からは南昌機務段所属の東風4D型ディーゼル機関車と東風11G型ディーゼル機関車による重連で牽引が行われた。T100次列車は5月24日深夜1時50分、16時間遅れで上海駅に到着した。滬昆線列車脱線事故の影響は、23日上海発九龍行きT99次列車と24日九龍発上海行きT100次列車にまで及んだ。23日上海発九龍行きT99次列車は、18時24分に上海駅を発車する予定であったが事故によって抑止された。最終的に上海駅を発車したのは24日早朝5時で、T99次列車はその日の夜23時35分に九龍駅に到着した。24日九龍発上海行きT100次列車は、24日午後に九龍駅を発車する予定であったが、遅延によって最終的に発車したのは25日深夜0時25分であった。2014年12月17日、T99/100次列車は直達特快列車に格上げされ、列車番号も九龍行きがZ99次、上海行きがZ100次に改められた。