箱館戰爭
箱館戰爭（日語：），該戰爭發生於1868年12月4日─1869年6月27日（即舊曆明治元年10月21日 - 明治2年5月18日），新政府軍和舊幕府軍圍繞蝦夷地（今北海道，戊辰戰後改名）展開一系列戰役，而舊幕府軍則接連敗退，最終使得榎本武揚等人投降，這也是明治新政府軍和舊幕府軍之間的最後一戰，至此舊幕府勢力的抵抗完全結束，戊辰戰爭宣告終結。又因為舊幕府軍在蝦夷地的根據地為五稜郭，故又稱五稜郭之戰，而因這場戰爭跨越了戊辰年來到了己巳年，因此也被人稱呼為己巳之役。
慶應四年（1868年）四月，在海軍奉行勝海舟的遊說下，江戶末代將軍德川慶喜同意投降，交出江戶城。在江戶無血開城後，戊辰戰爭的主舞台便轉移到了日本的北陸、東北，而德川宗家也被減封至駿府藩70萬石，德川慶喜也將家督讓與他的養子德川家達接任，雖說如此保下江戶城150萬人和德川家和平，但是卻也無法養得起人數多達8萬的江戶幕府舊臣，而此時擔任幕府海軍副總裁榎本武揚擔心幕府會因此人心渙散，於是率舊幕府軍決定前往蝦夷地，以北部地區作為新的根據地去進行開發和防禦。
因為決心要繼續抵抗。因此榎本武揚並沒有聽從新政府的意見將軍艦交出，而是在4月12日時，以天氣惡劣為理由，將艦隊移至館山一帶。而後在恭順派的勝海舟的勸說下返回了品川海峽，隨後有四艘軍艦引渡給新政府，分別是富士山艦、觀光丸、朝陽丸、翔鶴丸這四艘軍艦。但對於榎本一方而言，則成功保住了做為主力艦的開陽丸，並沒有交出去給新政府。 到了7月，以仙台藩為核心，在北陸和東北對抗新政府軍的奥羽越列藩同盟向榎本的艦隊提出支援的請求，因此在8月20日，以開陽丸為旗艦的8艘舊幕府艦船從品川海峽離去，駛出江戶灣，向著仙台的松島灣駛去。但榎本艦隊出航伊始便碰上了惡劣的天氣，在8月22日在鹿島灘附近遭遇了暴風的襲擊，艦隊面臨著被海浪打散分解的危險，因此榎本不得不下令全軍回到松島灣集結並重新整備。這次突然的事故導致了榎本艦隊損失了2艘運輸艦，分別是“咸臨丸”和“美賀保丸”，隨後剩餘的6艘軍艦只好陸續向松島灣集结，而且因為艦船們都遭到大小不等的損壞，因此需要進行修理維護，而這一維護就花了將近一個月的時間，到了9月中旬，為了支援庄內藩，於是派出千代田形和長崎丸以及100名陸軍前往，但是在這段時間裡，奥羽越列藩同盟已經瓦解了，米澤藩、仙台藩、會津藩等藩都先後投降新政府了，而庄內藩也在支援的艦船到達以前便已經投降了，至此可以說戊辰戰爭的東北戰事徹底宣告結束了。 而後同盟的殘餘勢力在松島（仙台）和北移的幕府軍會面，幕府軍徵用了兩艘運輸艦來彌補之前因天氣而損失的運輸艦，分別是太江丸和鳳凰丸，而後與同盟的殘餘勢力會合，其中便包括很多近代日本的有名人士，如：因為榎本艦隊進入仙台城接收了一眾殘部，這使得此時幕府軍的數量已經膨脹到近4000人之多，10月9日，艦隊從松島灣出發，向著牡鹿半島駛去(石卷市)。而就在這個時候，舊幕府軍向此時新政府的最高將領、時任奧羽追討平潟口總督的四條隆謌遞交了一份為救濟舊幕臣而開拓夷地的內容的請願書，即「蝦夷地的徳川家永久御預」。而由於了解到舊幕府軍的軍力相較之前有所膨脹，因此新政府決定派遣2000人的部隊支援石卷地區。仙台藩的武士們擔心又有一場戰爭要在這裡爆發，因此這些武士通過石卷地區的一个富商與榎本武揚進行協商談判，說明仙台藩願意向他和他的部隊提供了充足的食物和各項物資，而交換條件便是艦隊要離開仙台。榎本同意了，於是他抽調2000多名精銳士兵登上艦隊。隨後在10月12日便啟航朝宮古灣（岩手縣）而去。而那些被留下的殘餘舊幕府軍則是一哄而散，但仍有100多名未能逃脱的士兵被新政府的部隊抓獲，這些人在岸邊被陸續斬首，隨後將這些頭顱曝曬在町公之於眾。
在明治維新這個時代，除了松前和江差一帶的松前藩領地以外，大部份的蝦夷地都是由幕府進行直接管轄。並且幕府時設置了箱館奉行這個職位來管轄蝦夷地，而等到新政府建立後，則是改由設置箱館府這個行政機構管轄，此時最高長官為府知事清水谷公考。在幕府直轄蝦夷地時期，奥羽諸藩（陸奧、出羽）都有向蝦夷地区派遣了軍隊，但當戊辰戰爭的戰火蔓延到東北地區後，這些藩都撤回了軍隊，因此此時蝦夷地區的防備兵力就只剩下僅100餘人的箱館府兵和松前藩兵而已。而就在榎本艦隊北行的期間，新政府看出其北行的意圖，所以箱館府便向鄰近的親明治政府的藩請求援軍。
在10月19日，距離箱館最近的弘前藩派遣了由家老杉山成知帶隊的4小隊2200餘人前來支援，而10月20日又有來自福山藩的約700名士兵(隊長：岡田伊右衛門)和來自大野藩的170名士兵(隊長：中村雅之進)在軍事参謀試補野田豁通的帶領下抵達箱館，做好迎擊北上的舊幕府軍的準備。
10月21日，舊幕府軍在箱館北部的鷲之木地區(茅部郡森町)登陸，隨後舊幕府軍兵分兩路向箱館進軍，一路由大鳥圭介帶領主力部隊向峠下、七重一帶，延著海岸線進軍，另一路則由土方歳三率領支隊向鹿部、川汲峠一帶，沿著山路向箱館進行迂迴包抄。舊幕府軍不打算進行不必要的戰爭，因此決定先向當地的箱館府知事清水谷公考派遣特使，向清水谷府知事遞交有關開墾蝦夷地的請願書，由游擊隊長人見勝太郎和本多幸七郎率領30人前往。而就在10月22日的夜晚，舊幕府軍在峠下的軍營受到箱館府軍的夜襲，但被大鳥所率領的本隊擊敗後退走，至此拉開箱館戰爭的序幕。
10月24日，與人見勝太郎的小分隊會合的大鳥軍分別在大野村和七重村擊敗了箱館府軍，而另一方面的土方軍則在川汲峠也擊敗了箱館府軍。一時之間，進攻諸軍皆敗的消息讓清水谷府知事決定放棄五稜郭，於是在10月25日，新政府軍便搭乘上秋田藩的陽春丸和從普魯士租借而來的軍艦離開箱館，撤退到了青森港。
因此舊幕府軍便在10月26日無血進入五稜郭要塞。榎本隨後讓艦隊進入箱館的港口。舊幕府的軍隊很順利的在登陸蝦夷地後的五天內成功地佔領了箱館全境。此外對於舊幕府軍還有意外之喜，就是在10月27日，因為不知道舊幕府軍已經佔領箱館的情況下，秋田藩的高雄丸軍艦（後被箱館政權改名為第二回天號）照常駛入箱館港，隨後便被舊幕府軍捕獲。
以蝦夷地為根據的松前藩在家老松前勘解由帶領之下原本始終保持著見機行事的兩面逢源態度，一方面加入奥羽越列藩同盟，一方面對明治政府保持著恭敬臣服的姿態。但是在這一年（1868年）的7月28日（1868年9月14日），以少壯派松前藩士為主體的「正義隊」因為此前便已和清水谷公考有所接觸，並且已經約定要協助新政府軍，因此正義隊便在下國崇教的帶領下攻殺松前勘解由，這使得松前藩一改之前的態度，成為堅定的尊皇派。因此當舊幕府軍攻下箱館後向松前藩勸說投降的時候，松前藩將派遣來的使者殺死以表達決心戰鬥的意志。
10月27日，以土方歲三為總督率領由彰義隊、額兵隊、衝鋒隊等幕府軍隊組成的700人部隊向松前藩的松前城進發準備進攻。11月1日，這支部隊在知內駐紮宿營時，被松前藩的士兵奇襲，但被土方率隊擊退。到了11月5日，成功抵達松前城下。而在行軍期間，在11月1日時蟠龍丸向松前城進行砲擊。
而早在10月28日時，松前藩藩主松前徳廣便已經率部隊離開松前城，退往內陸的館城，松前城內只留下了少數的士兵。因此戰事一開，松前城的搦手門（城堡後門）便受到土方率隊猛攻，松前城留下的士兵們雖說頑力抵抗，並藉由反復打開大門發射大砲的方式打擊土方軍，但在土方軍的猛烈攻打下，松前城在幾個小時內就被土方軍給攻陷。於是松前藩的士兵們便放火燒了松前城，並向江差方向敗退。
11月12日，舊政府軍乘之前攻下松前城的餘威，由額兵隊隊長星恂太郎率領500人額兵隊為先鋒從松前向江差挺進。途中還攻陷了大滝陣屋。到了11月15日當星恂軍逼近江差時，松前藩在江差的士兵早已被擊敗了，被派遣來支援江差戰事的以幕府主力軍艦開陽丸為主的艦隊水兵給無血佔領了江差。
然而，在15號當天的傍晚，江差海峽的天器突然急劇惡化，一股股暴風和漫天的大雪將原本停泊在岸邊的開陽丸吹到淺灘導致艦體觸礁，而接下來連續長達三天的大風浪則不停破壞著無法搶修的開陽丸，最終導致開陽丸徹底毀壞，而本來被派遣來救援的兩艘運輸艦之一的神速丸也同樣因为觸礁而損壞。榎本艦隊在數天內連續損失兩艘艦船，尤其是艦隊當中的主力軍艦開陽丸的損失影響尤大，雖說開陽丸上的官兵得以保存，但這次的惡劣天氣卻是實實在在重創了榎本艦隊的實力。這使得舊幕府軍隊難以繼續維持其制海權，為新政府軍提供了登陸蝦夷地區的有利空間。
另一方面，在11月10日的時候，舊幕府軍派遣松岡四郎次郎率領一個500士兵組成的第一聯隊從五稜郭出發，經過二股進攻松前藩藩主松前徳廣所駐紮的館城，並在11月15日攻陷館城，而松前德廣早在12日便從館城離去，向著松前藩的北端的熊石退去。而到了11月22日舊幕府軍抵達熊石時，松前徳廣已經帶領60餘名親族家臣逃往弘前藩，松前藩剩下的300餘名士兵向第一聯隊投降，至此，舊幕府軍將明治勢力從蝦夷地趕出去，成功佔領了整個蝦夷地區。
12月15日，平定了蝦夷地的舊幕府軍建立了箱館政權。隨後舉辦記名制的選舉，由士官級別以上的幹部投票選出包括總裁、副總裁、海軍奉行、陸軍奉行等重要的內閣人選，並由獲得最高票的榎本武揚出任箱館政權的第一任總裁。而副總裁則是由原江戶幕府陸軍奉行並（陸軍副司令，陸軍中將）的松平太郎出任。陸軍奉行（陸軍司令）則是由大鳥圭介出任，而原新選祖副長的土方歲三則是擔任 陸軍奉行並一職。
早在12月1日，舊幕府軍剛佔領蝦夷地區沒幾天的時候，榎本便向英法兩方駐紮於此地的軍艦委託，請求將解決蝦夷地的開發問題的請願書轉交給明治政府，兩國公使於是便將這份請願書交給新政府的右大臣（明治政府重設太政官制度至新內閣制度實施）岩倉具視，而岩倉右大臣則在12月14日時拒絕了舊幕府軍的請求。
此外，在建立箱館政權的同時，舊幕府軍也重新整編了手頭上擁有的各式軍隊，以對抗之後與新政府軍的戰爭，並在已控制地區中的如江差、松前、鷲之木等沿海地區布置守備部隊。此外，之前沉沒的開陽丸上生還的水兵，則被分配到擔任開拓奉行的艦長澤太郎左衛門的部隊裡，負責北上前往室蘭進行開拓和防衛。
並且為確保舊幕府軍方面的資金足夠應付之後的一系列戰爭，蝦夷政權除了向當地的富賈豪商籌集資金以外，還在一本木的關所上增設了一個通行稅，以此收取過路的貨物稅收，而且還私自鑄造貨幣來提供給新政權使用。因此對於當地原有的箱館平民而言，這無異是打亂了原本的生活習慣和加重了稅收，所以在這些住民眼中，新的蝦夷政權的評價並不太好。也因此在箱館府的村山次郎的帶領之下，當地秘密成立了一個組織，名叫「遊軍隊」，這個組織的人悄悄以城市中的下級官僚和弁天台場的士兵等身分，逐漸滲透進了舊幕府軍的內部。
同年的10月30日，舊幕府軍已經攻占箱館，並且在和松前藩激烈交戰中的情況通報至東京後，明治新政府立刻反應過來，調動津藩、岡山藩、久留米藩這三個藩的合計約1000名士兵經由海路前往青森。11月6日，奧羽軍征討軍參謀山田顯義率領長州藩和德山藩的士兵經由秋田抵達青森。11月9日，山田顯義被任命擔任青森口總督府下轄會議所的海軍參謀兼陸軍參謀。11月19日，新政府軍頒布了對舊幕府軍的征討令。到了11月27日，來到青森避難的原箱館府知事清水谷公考被新政府任命為青森口首任總督。然而，由於新政府軍對於冬季行軍的準備並不是十分充分，因此征討箱館的行動决定延後到第二年春季，等天氣轉暖後再開始行動，故集結而來的各藩士兵便在青森附近駐紮以度過這個冬季。
陸軍方面，在明治二年（1869年）二月時，以弘前藩和松前藩兩個藩為主力的8000多新政府軍已經在青森集結完畢。而海軍方面，明治政府因為已經擊敗了奧羽越列藩同盟，算是擊垮了原德川幕府的大部分有生力量，因此要求美國解除中立，將原本販賣給德川幕府的最新型鐵甲艦轉賣給明治政府，美國隨後同意，因此明治政府將這艘排水量達1358噸的日本第一艘鐵甲艦命名為「甲鐵艦」。新政府海軍以增田虎之助为海軍參謀，他將來自各藩的軍艦改組整編成一支新艦隊。到了3月9日，經過整編後的新政府艦隊，在4艘軍艦和4艘運輸艦的組成下，並以甲鐵艦為旗艦，浩浩蕩蕩從自品川海峽一路北上前往青森港，並於3月18日進入港口。
當舊幕府軍接收到新政府的艦隊駛入宫古灣的情報時，因為先前箱館政權損失了主力艦開陽丸，因此其上層很快便制定了搶奪甲鐵艦的計畫。3月20日，該計畫由箱館方的海軍奉行（海軍司令）荒井郁之助為指揮官負責主持，跟隨一起前去的還有陸軍奉行並（陸軍副司令）土方歲三率領的100名箱館陸軍，這支部隊搭乘著回天丸、蟠龍丸和捕獲來的高雄丸這三艘軍艦朝向宮古灣出航。
計畫內容是派遣這幾艘舊幕府軍隊現有的軍艦，掛上外國的旗幟偽裝後進入宮古灣後趁新政府軍不備奪取甲鐵號，其中當前的主力的回天丸負責壓制港內新政府其餘軍艦，而蟠龍丸和高雄丸這兩艘小型軍艦從左右靠上甲鐵號，讓突擊隊直接從甲板登上甲鐵號，並將上頭的新政府軍壓制後奪走該軍艦。
到了3月23日，三艘軍艦航行的途中遭遇了暴風雨，這使得部隊前進困難。在原本預計集結的山田灣（岩手縣東部）裡，回天丸和高雄丸成功會面，但蟠龍丸卻仍然不知所蹤。奇襲艦隊經由討論後決定由已經抵達的這兩艘軍艦發動奇襲，於是在3月25日的凌晨，兩艘軍艦正欲趁著夜色和外國旗幟進入宮古灣，但這時高雄丸的蒸汽機關也發生了故障，導致無法繼續參戰，經過一番糾結且擔心戰機就此丟失，因此回天丸艦長甲賀源吾決定仍按照計畫而來。
到了3月25日凌晨天剛破曉時，回天丸藉由美國國旗成功進入宮古灣內，等進入成功後，便馬上將美國國旗撤下換上日章旗，並且藉由船上的56磅砲對甲鐵號成功進行壓制。正當回天丸準備要用右舷接上甲鐵艦時，卻發現之前計畫的錯誤和簡陋，二者甲板的差距竟然有3米多的距離，這為準備登上甲鐵艦的突擊隊倍感為難，猶豫不前。這時候艦長甲賀大吼命令攻擊，於是海軍士官見習、一等測量員大塚浪次郎、船員矢作冲麿、舊新選組隊士野村利次郎、彰義隊隊士笹間金八郎、加藤作太郎、伊藤彌七等人紛紛跳上甲鐵艦準備突襲，但此時甲鐵艦上的新政府軍早已回應過來了，那些登上甲鐵艦的舊幕府軍成為了安装在甲鐵艦上的加特林機槍和步槍的最佳目標，當場就被擊斃四人。同時回天丸也開始與灣內的新政府軍作戰，在一番激烈的槍戰後，在包含回天丸艦長甲賀源吾和舊新選組隊士野村利次郎等人在內，總共有15人被當場擊斃。交戰僅僅30分鐘後，便以舊幕府軍的失敗告終，回天丸憑藉快速的航速倒車撤退而去。
當回天丸成功離開宫古灣後，原本因為蒸汽機關故障後導致移動速度較慢的高雄丸便被追趕而來的新政府軍艦春日丸和甲鐵艦趕上，被迫在羅賀海邊的田野畑村擱淺，高雄丸上的蝦夷陸軍在放火後便步行逃跑，但最終在3月29日終因新政府軍的圍剿下向鄰近的盛岡藩投降。而原本因天氣惡劣而在鮫港中的蟠龍在3月25日時成功和逃離宫古灣的回天丸會合，二者在3月26日時成功回到了箱館。
這場海戰，以舊幕府軍的失敗告終，新政府軍以4人戰死的代價成功保住了甲鐵艦的安全，並因此成功重創了來犯的舊幕府軍，還擊斃了擔任回天丸艦長的舊幕府方高級武士甲賀源吾，新政府方死傷30餘人，而舊幕府軍死傷50餘人。
在宮古灣海戰中取得勝利的新政府艦隊，在3月26日時抵達青森。新政府租用美國和英國的運輸艦來輸送兵力，在4月初的時候便完成戰前的各項集結工作。做好了渡海登陸的作戰準備。
海陸軍參謀山田顯義率領1500名新政府陸軍於4月6日從青森港出發。於4月9日早上登陸乙部。舊幕府軍得知此事後派遣江差的第一聯隊150人前來阻止新政府軍之後的登陸行動，但這150人被已經登陸的新政府軍先鋒松前藩兵給擊退。當岸上的陸軍之間還在彼此交火時，海上的5艘以春日丸為首的新政府軍艦則開始砲擊江差。江差的岸防砲臺準備做出反擊，卻發現對方軍艦可以砲轟到自己，但砲臺卻距離不夠，無法砲擊到對方軍艦上。於是舊幕府軍便只好在江差奉行松岡四郎次郎的帶領下後退至松前一帶。
新政府軍成功攻下江差地區，到了4月12日，新政府軍陸軍參謀黑田清隆率領2800名增援部隊抵達江差，此時新政府軍兵力已經有4000多人，與舊幕府軍紙面實力相當，於是決定兵分四路向著箱館方向進軍，分別是：
另一方面，舊幕府軍在4月14日時，派遣原本是會津藩後脫藩的二關源治率領見國隊的400名陸軍，乘坐著一艘英國艦船抵達了鷲之木旁的砂原，被投入於室蘭和箱館之間的防備任務。
4月11日，舊幕府軍調動原本在松前負責守備工作的一支人數達500人的箱館陸軍，這支由伊庭八郎所率領的遊撃隊和春日左衛門所率領的陸軍隊為主力的陸軍部隊被派遣去參與奪回江刺的行動。在根武田（現松前町）附近趕走新政府軍的斥侯。並且在第二天，箱館部隊立刻向茂草（现在的松前町）挺進，而新政府軍則避其鋒銳，向江刺方向撤退。舊幕府軍的軍官們見此便計畫一鼓作氣奪回江刺，但當這支部隊收到有支新政府軍的軍隊正跨過山區，準備經由木古內夾擊松前的消息時，這支部隊很快撤回了松前。
4月17日，新政府軍發動了對松前的作戰。在新政府軍的艦砲支援和優於舊幕府軍的軍隊戰力這雙重優勢的攻擊下，舊幕府軍在付出超過40人以上的死亡後，不敵新政府軍的猛烈攻勢，於是斷然放棄松前城，向知內方向撤退。
4月12日，在舊幕府軍陸軍奉行大鳥圭介的帶領下，傳習隊和額兵團趕到木古內，與當地負責守備的彰義隊合併，合編成一支人數達500人的部隊，並與新政府軍的斥侯發生小規模的衝突，並且收攏在17日松前戰敗後退走的軍隊，並在木古內周圍的各軍事重地布防好足夠的兵力。
4月20日，還沒完全天亮，以木古內為方向的新政府軍便發動了總攻擊，兩軍之間爆發了激烈的戰鬥，戰鬥一直持續到中午。舊幕府軍隊中的額兵隊和游擊隊始終奮勇作戰，在戰線逐步後撤至泉澤（現木古内町）的路上，舊幕府軍死傷了70餘人。隨後，本多幸七郎率領舊幕府軍的傳習隊來救援被孤立在知內的300人彰義隊，二者會合後便一起撤向木古內。而這支部隊決定前往木古內的行為，讓原本已經攻下木古內的新政府軍擔心被前後夾擊，因此決定撤退，舊幕府軍便這樣奪回了木古內。然而舊幕府軍在判斷形勢後，將木古內也放棄了，退往矢不来（現北斗市），因為那裡已經建構好了一個具有砲臺和胸牆的軍事陣地。
在木古內，向木古內前進和向松前前進的兩支新政府軍合流，這支部隊在做好充足的整備後，在4月29日，新政府軍陸軍參謀太田黒惟信率領1600名新政府軍從大路、海岸、山上這三個方向進攻矢不來。並且新政府軍還調來以春日和甲鐵為首的艦隊前來進行砲擊支援，在艦砲猛烈的轟炸下。舊幕府軍以衝鋒隊大隊長天野新太郎和永井蠖伸斎為首的諸多官兵死傷，這使得矢不來的舊幕府軍戰線在很短的時間裡崩潰。
舊幕府軍陸軍司令大鳥圭介還試圖在富川（現北斗市）重新收攏組織部隊以恢復戰線，但卻始終無法做到，只好無奈率領部隊一路撤退到有川（現北斗市）。在有川，由箱館政權最高統帥、總裁榎本武揚親自指揮部隊，但舊幕府軍此時已經是軍心渙散，開始向箱館方向一路敗退。舊幕府軍在矢不來一戰中戰死者達到了160人。
在箱館方陸軍副司令土方歲三的指揮下，來自衝鋒隊和傳習隊的300名箱館陸軍，在4月10日抵達台場山（現北斗市），這支部隊花了兩天的時間構築了一個有16座胸牆的防線，以此來抵禦即將來襲的新政府軍。到了4月13日正午過後，700名新政府軍開始發動攻擊，土方軍便藉由胸牆的掩護下用步槍進行防禦。因為新政府的軍人數量比舊幕府軍多，因此憑藉人數優勢發動了多輪攻勢，但土方軍在雨勢中採用每兩小隊持步槍輪流射擊的方式防禦著。戰事持續到第二日（14日）早上，新政府軍感到疲憊困乏，因此暫時收兵撤退到稻倉石，舊幕府軍在這場長達16小時的激戰中消耗了多達35000發子彈。
到了4月22日，新政府軍試圖再次進攻，但仍被土方軍擊退。因久攻不下二股口，新政府軍決定放棄繼續正面進攻的打算，在4月23日下午，新政府軍攀爬上一旁陡峭的山峰，由上而下的從側面使用步槍攻打二股口的舊幕府守軍，兩方激烈的交火持續了整個夜晚。
在4月24日天還未亮，舊幕府軍步兵頭並瀧川充太郎率領傳習士官隊拔刀衝入新政府軍中，新政府軍因為突如其來的攻擊下頓時陷入大亂，新政府軍因此敗退而去。儘管如此，新政府軍仍重新組織部隊，並且繼續投入新的作戰部隊，舊幕府軍只好用冷水來把已經很燙的步槍槍身降溫，以便繼續作戰。直到4月25日凌晨，新政府军才終於下令部隊暫時撤退。
而後新政府軍改變作戰策略，開始從山區開闢道路準備繞過二股口這個軍事關隘，而等到4月29日矢不來之戰中舊幕府軍敗退，為了避免被新政府軍切斷後撤和補給的道路，土方軍只好放棄二股口陣地，一路撤退到五稜郭要塞。
4月28日，青森口總督清水谷公考登上江差的土地。而新政府軍從5月1日開始，將向松前、木古內進軍的東下軍和向二股口進軍的南下軍的三支部隊在有川進行集結，做好對箱館發動進攻的充足準備。而因為幕府軍這一個月以來的陸上作戰可以看出敗象已現，因此法籍軍事顧問團的副隊長、砲兵大尉儒勒·布呂奈、卡澤納夫等人在看清局勢後，乘坐上法國艦船離開了箱館。在箱館方陸軍司令大鳥圭介的率領下，舊幕府軍數次夜襲了七重濱的新政府軍。5月8日，榎本武揚甚至親自率領部隊夜襲大川（現七飯町），但卻以失敗告終。到了5月11日，新政府軍發動了對箱館的海陸兩方面的全面進攻。
在經過這段時間頻繁的作戰後，舊幕府方很多軍艦不是損傷就是被擊沉，到箱館灣海戰前就只剩下三艘軍艦，分別是回天丸、蟠竜丸、千代田形丸。而另一方面，明治新政府為了確保陸上軍隊能及時得到應有的支援，以及能夠盡快破壞陸上的其他要塞，便以甲鐵艦為旗艦，另外再建造多四艘軍艦，分別是春日丸、陽春丸、延年丸以及丁卯丸，另外又從舊幕府軍中捉獲一艘名為朝陽丸的軍艦。
因此在這種差距極大的艦船數量下，舊幕府軍艦中的千代田形丸先在5月1日在箱館灣內觸礁後被放棄，隨後被新政府軍捕獲。5月3日夜晚，遊軍隊的間諜斎藤順三郎破壞了弁天台場的大砲。舊幕府軍只好緊急鋪設一條鐵索封鎖箱館灣的海面。但在5月6日時就被新政府軍給切斷，新政府的艦隊得以駛入箱館灣內。在5月7日時，雙方在灣內爆發海戰，回天丸的蒸汽機關被新政府軍催毀，舊幕府海軍只好將其開到淺灘上，讓其成為一個浮動的炮台，以艦砲進行支援。
在5月11日的海戰中，舊幕府軍僅存的軍艦蟠龍丸，成功擊沉新政府軍的朝陽丸軍艦，這使得箱館方士氣大振，但沒過多久，保受砲彈打擊的蟠龍丸也擱淺了，船員們只好上岸和弁天台場的箱館陸軍會合。至此舊幕府軍所有的海上力量消耗殆盡，在丟失制海權的情況下，箱館政權的失敗只是遲早的事情罷了。
在箱館灣海戰發生的同時，陸軍方面，舊幕府軍在大鳥圭介的指揮下，在通往五稜郭的北方通道，龜田新道的桔梗地上布置著由傳習歩兵隊、遊撃隊、陸軍隊所組成的防守陣地。5月11日凌晨，新政府軍組織了4000人的部隊進攻此地，儘管大鳥努力地東西奔波指揮著軍隊，且用大砲進行防守，但仍不敵新政府軍的攻勢，一路退往五稜郭要塞。舊幕府軍本來在五稜郭以北還建造了一個名為四稜郭的次要要塞，並且派遣由松岡四郎次郎率領的第一聯隊進行防守任務，但當他發現新政府軍已經攻下四稜郭與五稜郭之間的權現台場時，為防止己方部隊的退路被新政府軍切斷，只好撤軍退往五稜郭。
另一方面，在同一天的黎明前，新政府軍的陸軍參謀黑田清隆率領著700人的部隊乘坐豐安丸和飛龍丸運輸艦，乘著夜色，從箱館山的後側悄悄登陸。豐安丸所運送的部隊從西北側的山背旁的海岸登陸，從背後威脅舊幕府軍的弁天台場大砲陣地，而黑田親自率領的飛龍丸部隊在西側的寒川附近登陸，並且攀爬到箱館山的山頂。山頂上負責監察的舊幕府軍見此大驚失色，隨即逃走，黎明時分時新政府軍便以完全佔領箱館山。而後做為間諜的遊軍隊在箱館山藥師堂迎接新政府的奇襲部隊，並引導新政府軍沿著山路行動。
為了應對新政府軍的突然登陸，箱館奉行永井尚志進入弁天台場，並增強其各項防衛。而後派遣步兵頭並瀧川充太郎，率領傳習士官隊和新選組前往箱館山阻擊新政府軍，但是來自箱館山上的攻勢異常強烈，再加上大森海灘的陽春丸軍艦的艦砲打擊，這支部隊一路且戰且退到了一本木的關口，隨後一路向五稜郭撤退。到了這天的上午11點，箱館的市街已經被新政府軍給成功奪取，來自弁天台場的舊幕府軍便在街內的木材行放火，火勢迅速蔓延開來，一場大火下來，摧毀了872間房屋。
在攻下箱館市區後，新政府軍率軍挺進一本木的關口，這時新選組隊士島田魁所守備的弁天台場被新政府軍包圍，陷入重重包圍。土方歲三便率領少數士兵突圍相救。力阻自七重濱大舉進犯的新政府軍於一本木關口，卻不幸在一本木關口指揮戰鬥時，腹部中彈，落馬不治。箱館政權副總裁松平太郎率軍想奪回箱館市區的計畫也失敗，舊幕府軍至此，僅剩下五稜郭、弁天台場、津輕陣屋等幾個殘餘陣地。
在戰爭期間，箱館醫院的院長高松凌雲秉持著红十字會的精神，宣布該醫院的非武装中立，不分敵我的去治療箱館戰爭中受傷的兩方傷員。在5月11日的戰鬥中，新政府軍亂入箱館醫院裡，在充滿殺氣的新政府軍面前，與試圖去保護病人的高松言語之間多次衝突，薩摩藩士山下喜次郎在聽完高松的主張後離開，並在醫院門前貼上上面寫著的已經薩州隊審查的墨跡紙條。而在分院的高龍寺的非武裝卻進行的不夠徹底，雙方再度爆發衝突，松前藩士兵和弘前藩士兵殺死了十餘名舊幕府軍並放火來燒。
到了5月12日，箱館灣的甲鐵艦開始砲轟五稜郭，在接連不斷的砲擊下，箱館軍步兵頭（相當陸軍大佐）古屋佐久左衛門受了重傷，並且造成許多箱館陸軍傷亡。舊幕府軍崩潰在即，接二連三的逃兵開始離開五稜郭而去。
在5月12日的夜晚，在新政府的陸軍參謀黑田清隆的命令下，新政府軍的軍監村橋久成和監軍池田次郎兵衛來到中立的箱館醫院，前去探訪舊幕府軍的會津遊擊隊隊長諏訪常吉。新政府方試圖藉由諏訪常吉在與舊幕府軍的投降談判中進行調解，但此時諏訪已經是奄奄一息了。所以諏訪便與高松凌雲和箱館醫院的事務長小野權之丞一起聯名向總裁榎本武揚勸說投降新政府軍。榎本與士官以上官員召開會議進行討論後，5月14日榎本武揚宣布拒絕投降。为了避免自己在荷蘭學習所獲得並翻譯為日文的「海律全書」（內容為海洋國際法和外交）在戰火中損壞，因此讓高松將這本書交給黑田清隆。
同一天，榎本根据永井的建議，在津輕陣屋附近的一所房屋裡和新政府軍的軍監田島圭蔵會面。並且再次拒絕新政府方的勸降，但提出將五稜郭內的傷病人員送走，隨後便有舊幕府軍方面的250名傷病人員在當天較晚的時候被送至湯川。
而弁天台場在前方的艦砲射擊和後方登陸的奇襲部隊的兩面圍攻下始終堅持著，但它的补给已經即將耗盡，部分原因是因為弁天台場收容了那些失去船艦的眾多海軍士兵，導致糧食消耗增加許多。到了5月15日，永井尚志率領240人的部隊開城投降。在同一天，榎本送回了在五稜郭被俘虜的11名新政府戰俘。
做為五稜郭的前哨陣地，津輕陣屋也有新政府軍的使者前來勸降，但被擔任箱館奉行並的中島三郎助給拒絕了。另一方面，小彰義隊的隊長涉澤成一郎率領手下向湯川方向逃走。5月16日，在拒絕撤退到五稜郭的命令後，中島和他在浦賀擔任與力時候的下屬們進行了最後的抵抗。在經過一小時的激烈交戰後，津輕陣屋的守備軍徹底崩潰，中島和他的兩個兒子（恒太郎、英次郎）在這場戰鬥中陣亡，這也是整個箱館戰爭中的最後一場戰鬥。
在同一天（5月16日），黑田清隆送給榎本5瓶好酒和5條鮪魚和一封感謝信，作為榎本贈送給他「海律全書」的回禮。榎本則欣然接受這份回禮，並且在同一天傍晚，榎本方面派出一名特使回訪新政府軍，要求兩方休戰到第二天早上7点。新政府軍同意了他的要求，並且通知這名使者五稜郭總攻擊的日期和時間。在休戰的這段時間裡，舊幕府軍召開高層首腦會議，經過討論後，舊幕府軍決定開城投降。這天晚上，榎本準備切腹自殺以承擔發動戰爭的責任，並且替準備投降的舊幕府軍們求情，但被碰巧路過的大塚霍之丞阻止（榎本本來是請求路過的他幫自己介錯）。
5月17日一早，箱館政權總裁榎本武揚和副總裁松平太郎及箱館政權一眾軍政幹部，在龜田八幡宮與新政府軍陸軍參謀黑田清隆、海軍參謀増田虎之助等新政府軍高層會面，並且這些舊幕府軍幹部願以自己承擔全部的戰爭罪狀來換取對士兵們的寬大處理。然而黑田拒絕了這項請求，因為如此處理的話會導致失去像榎本等這樣的人才的性命。榎本等只好不再堅持，宣布無條件投降。會議結束後，新政府軍讓舊幕府軍提供一份有關投降儀式的程序。隨後榎本將投降的誓言書奉納給龜田八幡宮，並返回五稜郭制定好投降的儀式和時間。
5月18日（公曆1869年6月27日）一早，開始投降儀式，榎本和箱館眾幹部來到了龜田的屯所，而後在中午時，五稜郭開城。郭內的大約1000名舊幕府軍投降，並且在當天都被解除武裝。至此戊辰戰爭和箱館戰爭宣告結束，日本近代這場近兩年的內戰以明治新政府的大獲全勝宣告完結。此外，原本被派遣到室蘭負責開拓和防衛的開拓奉行澤太郎左衛門也率領250人在5月22日投降新政府，並在6月11日抵達箱館。
投降的一眾舊幕府軍官兵被带到箱館的寺廟安置，隨後被带到弘前藩等地囚禁，其中大部分人在第二年被釋放。而箱館政權內的七位高級官員：總裁榎本武揚、副總裁松平太郎、陸軍奉行大鳥圭介、海軍奉行荒井郁之助、箱館奉行永井尚志、海軍頭松岡磐吉、新選組隊長相馬主計這7人被關押在東京辰之口的軍務官糾問所的牢獄裡，並於3年後的明治五年被釋放。