於是,康熙接受了這個挑戰,又下令黑龍江將軍薩布素等率軍討伐。康熙二十五年(1686年)6月,清軍2000餘人用神威無敵大將軍等火炮日夜向雅克薩城內猛轟,並且使用了從台灣調來參戰的400名藤牌兵攀城。俄軍膽顫心驚,挖洞穴居,鏖戰4晝夜,800名俄軍被殲隻剩下百餘人,托爾布津被擊斃。接著,清軍在城外掘壕圍困,截斷城內水源,並擊敗了俄軍的5次反撲。俄軍傷亡累累,最後隻剩下20餘人,彈盡糧絕,危在旦夕。沙皇政府被迫"乞撤雅克薩之圍",並派戈洛文為大使,前來中國舉行邊界談判,十一月,清政府為表示談判誠意,宣布無條件停火,停止攻城,同時命令剩餘軍隊退回尼布楚。
康熙二十八年(1689年),中國欽差大臣索額圖和俄國全權公使陸軍上將費要多羅,在尼布楚談判,訂立了尼布楚條約,這是中國和近現代歐洲國家簽訂的第一個條約。根據條約,額爾古納河、格爾必齊河和直達於海的外興安嶺為中俄邊界,外興安嶺和烏第河之間土地的歸屬另行議定。這樣,黑龍江和烏蘇裏江流域的廣大地區被確認為中國的領土。
柏楊先生在《中國人史綱》中寫道:"這是一個重要的條約,使中、俄得到和解,為中、俄兩國帶來一百七十年的和平,跟十一世紀中國與遼帝國澶州和解帶來一百一十四年的和平同樣重要。俄國對遙遠的東方固然力不從心,而中國如果長期從事於東北荒涼寒冷地區的戰爭,也將精疲力盡。"
在簽訂《尼布楚條約》的後一年,清廷又進行了一場大規模的戰爭。此次戰爭對象是厄魯特蒙古的準噶爾部。清初,西北方居住的蒙古族分為漠南蒙古、漠北喀爾喀蒙古和漠西厄魯特蒙古三大部。漠北喀爾喀蒙古內部又分為紮薩克圖、土謝圖、車臣等三部。漠西厄魯特蒙古內部又分為準噶爾、和碩特、杜爾伯特、土爾扈特四部。清軍入關之前,漠南蒙古就已歸附清朝屬於內蒙古,喀爾喀蒙古和厄魯特蒙古各部雖屬於外蒙古也與清廷關係密切。蒙古當然隻有一個,本沒有內外。清廷以蒙古與中國合並的時間有先後,加以分割,先跟中國合並的南半部稱內蒙古,後跟中國合並的北半部稱外蒙古。
17世紀中葉以後準噶爾部逐漸強盛起來,特別到噶爾丹為汗時期,勢力更加強大。他不僅統治了厄魯特四部,而且占領了天山南路各城,勢力達到青海、西藏地區,總國土達到了二百八十萬平方公裏。此時的噶爾丹雄心勃勃,企圖恢複成吉思汗的蒙古帝國,遂起兵進攻漠北喀爾喀蒙古四部。
"已遷到北京的清政府無意向北發展,他們對擁有內蒙古廣大的領土和西伯利亞外興安嶺以南廣大的領土,已心滿意足。"(《中國人史綱》)但是,被準噶爾部打得如喪家之犬的喀爾喀部無可奈何,窮途末路之下決定歸附中國。
康熙接到了喀爾喀部的歸附信,立刻命令喀爾喀部撤退到內蒙古,並且發給臨時急賑救濟。然後,向噶爾丹可汗下通牒,要求他放棄使用武力,退出外蒙古。噶爾丹開始答應放棄武力,但必須中國先行交出喀爾喀部的庫倫活佛和土謝圖汗。康熙當然不會同意,交出庫倫活佛和土謝圖汗,就是背信棄義的舉動,大清國的麵子往哪裏擱。
於是,噶爾丹遂繼續東進,橫穿外蒙古高原,抵達二千五百公裏外的克魯倫河下遊,第二年,甚至深入到內蒙古,直抵距北京隻有三百五十公裏的烏蘭布通(內蒙古克什克騰旗南)。噶爾丹這種舉動是想給清廷一個下馬威,以硬碰硬。
麵對噶爾丹的猖獗,康熙決定親征。康熙下諭說:"噶爾丹侵擾喀爾喀及外藩蒙古。此番秣馬厲兵,整軍運餉,分路進剿,曲盡籌劃。告祭天地、宗廟、社稷,務期剿滅噶爾丹,而後出兵。我太祖高皇帝、太宗文皇帝親行仗劍,以建丕基。朕不法祖行事可乎?"
日本學者宮脇淳子在《最後的遊牧帝國》中寫道:當時"康熙帝把清軍分作三路軍,橫越戈壁沙漠前去作戰。黑龍江將軍薩布素所率東路軍有35430名將士,從沈陽出發後向東迂回,指向克魯倫河。康熙帝親自指揮的中路軍將士共37000名,從北京出發,又從現在的內蒙古自治區蘇尼特左旗西北向越過戈壁沙漠,直指巴顏烏蘭的噶爾丹大本營。撫遠大將軍費揚古率領的西路軍有將士35600名,從內蒙古西部越過陰山山脈,橫穿戈壁沙漠,師出翁金河,折而向東,奔向土拉河方麵。"
在康熙的親自指揮下,清軍將勇奮力作戰,將噶爾丹打得無還擊之力。噶爾丹無可奈何之下,隻能向俄國求援,願作俄國收複雅克薩城的先鋒。但是,俄國因為跟中國剛簽訂了《尼布楚條約》,所以對噶爾丹的提議,不作回答。
噶爾丹並不願意屈服,駐紮在屯科布多做整補訓練,1695年,他又垂死掙紮了一次,與三千公裏外的嫩江河畔的內蒙古科爾沁部,秘密結盟,向喀爾喀部發動夾擊。當噶爾丹再度進攻,東進二千餘公裏,抵達克魯倫河時,康熙帶領的三路迎擊的清軍早已進入攻擊的位置。噶爾丹再次敗退。