康熙二十四年(1685年)四月,都統彭春、郎談、黑龍江將軍薩布素等分率滿、蒙、漢等官兵三千餘人自黑龍江城(今瑗琿)和卜魁城(今齊齊哈爾),水旱兩路向雅克薩進發。五月二十二日,彭春率部抵達雅克薩城下,立即向俄方發出谘文,要求其撤出雅克薩,歸還逃人,以雅庫(今俄羅斯雅庫次克)為界,遭到俄方拒絕。次日清軍列陣,包圍雅克薩城。二十五日,一隊增援雅克薩的俄軍自黑龍江順流而下,被清軍將領林興珠率福建藤牌兵攔於江西。一場激戰,斃傷俄軍四十餘人。隨即,清軍架設“神威無敵大將軍”炮,向雅克薩城猛烈轟擊,同時水陸並進,四麵圍攻。經過一晝夜激戰,俄軍傷亡慘重,城內到處起火。二十六日,郎談命積柴焚城。俄國雅克薩督軍托爾布津走投無路,隻得出城投降,並發誓不再回雅克薩城。清軍準其投降。派人將托爾布津及其手下官兵、眷屬等七百餘人送到額爾古納河河口,收複了被俄軍侵占達20年的雅克薩城。不久,清軍撤回黑龍江城。
托爾布津等殘兵敗將回到尼布楚後,仍不死心。正項拜頓率領六百名哥薩克援兵也到達尼布楚,又探得清軍全部撤退,並未留兵駐防的消息,遂率領五百餘名俄軍返回雅克薩,加築工事,重新盤踞。康熙二十五年(1686年)五月,薩布素、郎談、班達爾沙等奉命率領清軍2100餘人會師於查克丹,再次進兵雅克薩。命俄俘鄂克索木果帶信入城警告俄軍,如不立即撤出,必將其全部殲滅。是時,盤踞城中的俄國侵略軍共有800餘人,他們憑借充足的火器裝備、彈藥糧草和堅固的城防工事負隅頑抗,並自城中頻繁出擊,不讓清軍炮位和攻城器械逼近城牆。薩布素率領清軍將士在當地各族人民的協助下,屢次擊敗出城挑戰的俄軍。六月初九日夜,薩布素下令向雅克薩城發起進攻。自夜到晨,重創俄軍,數日之內斃敵100餘人,托爾布津也中炮斃命,由拜頓繼任其職。但是,由於清軍除擁有少量大炮外,士兵作戰主要依靠刀矛弓箭,殺傷力較小,對攻堅戰尤為不利,故未能迅速拿下雅克薩城,戰事一時陷入僵持狀態。薩布素等為避免犧牲過大,停止強攻,於城外東、南、北三麵挖掘長壕,修築堡壘,又於城西江南布置水師,封鎖來自尼布楚方向的援兵航道,對城中俄軍進行長期圍困。由於城中無井,通常依靠通向黑龍江的水道引來水源。清軍經過四晝夜激戰,切斷了城中水源。數月之後,城中飲水、糧食、彈藥皆已告罄,加之疾疫流行,800多名俄軍隻剩下66人,尼布楚方麵也無力派來援軍,困守雅克薩的俄國侵略者已經瀕臨絕境。
盡管清方在軍事上取得重大進展,但為求得邊界上持久的和平,仍然不斷謀求與沙俄進行談判。此時的俄國,正值彼得一世之姐索菲亞公主執政,統權極不穩固,不可能再派大批軍隊前來中國,眼看困在雅克薩的俄軍將被全殲,遂決定接受清政府的建議,派出以戈洛文為全權代表的談判使團與清朝進行邊界談判。該年十月,俄國信使文紐科夫和法沃羅夫等到達北京,呈遞沙皇給康熙帝的書信,要求清政府停止攻打雅克薩,等待戈洛文一行到達後進行談判。清政府以禮接待了俄國信使,並在雅克薩城唾手可得的情況下同意了俄國的請求,命令薩布素等撤雅克薩之圍,又派太醫赴雅克薩為患病俄軍治療,且發糧賑濟,保住了坐困城中坐以待斃的俄國人性命。次年七月,清政府聞知戈洛文使團抵達邊境,遂命薩布素等率部返回黑龍江、墨爾根(今嫩江)等地駐守。至此,曆時兩年之久的第二次雅克薩之戰正式結束。
《尼布楚條約》
第一次雅克薩之戰後,沙俄見僅靠武裝入侵難以實現其對中國進行侵略擴張的目的,遂改變策略,企圖以軍事侵略和外交談判交替使用,迫使清政府就範。康熙二十五年(1686年)正月,沙皇政府任命戈洛文為對清談判使團全權大使,率使團於正月十三日自莫斯科起程來華。康熙二十六年(1687年)八月,戈洛文一行到達貝加爾湖東岸。
戈洛文一行在貝加爾湖東岸一帶停留了兩年時間。因此時清軍已然撤消雅克薩之圍,戈洛文就不急於與清方談判。他一麵窺探清政府的意圖;一麵竭力鼓動中國喀爾喀蒙古各部脫離清朝,臣服於俄國。遭到喀爾喀蒙古領袖土謝圖汗和哲布尊丹巴的堅決拒絕。戈洛文見挑拔離間難以奏效,又企圖以武力逼蒙古各部屈服。是年冬,戈洛文誣陷蒙古人民偷盜俄軍牛羊馬匹,命俄軍闖入蒙古牧區進行燒殺搶掠,俄國侵略者的暴行遭到喀爾喀蒙古人民的堅決反擊。十二月,蒙古軍民在楚庫柏興(今色楞格斯克)一帶打敗俄軍,迫使戈洛文等躲在城中不敢出來。康熙二十七年(1688年)六月,正當喀爾喀蒙古各部抗俄鬥爭取得一係列勝利之際,準噶爾部首領噶爾丹以“為弟報仇”為借口大舉入侵喀爾喀蒙古。喀爾喀各部相繼戰敗,土謝圖汗和哲布尊丹巴等率數十萬眾南歸,要求清政府予以保護。戈洛文見有機可乘,遂與噶爾丹相勾結,派俄軍分路出擊,逼迫喀爾喀各部歸順俄國。由於喀爾喀蒙古人民的堅決反對,戈洛文一夥的陰謀未能得逞。