中途岛海战 戰役經過
下午2時45分，約克鎮號派出偵察的SBD發現飛龍號，斯普魯恩斯立即下令企業號和大黃蜂號準備出擊，但大黃蜂號的航空指揮卻再次陷入混亂。3時10分，艦長馬克·密茲契上校臨時中斷作業並清空艦艉甲板，收回7架F4F戰鬥機和11架在中午迫降中途島的SBD；因此，當斯普魯恩斯下令在3時30分開始出擊時，密茲契只能匆忙重新準備出擊機隊。大黃蜂號要到4時正才開始派出機隊，但過程中又有2架飛機故障而要收回，其時企業號的24架SBD早已飛向目標。由於耽誤了出擊時機，大黃蜂號在派出16架SBD後便被迫中止作業。
山口多聞原本計劃在4時30分派出第三波攻擊機隊，但因為飛行員過於勞累而推遲到6時。當時飛龍號只剩下13架零式戰鬥機（已升空）、4架九九式艦上爆擊機（俯衝轟炸機）和5架九七式艦上攻擊機，但山口多聞仍希望可以擊傷第三艘美軍航艦（然而如同前述，實際上日軍之前兩次擊傷的是同一艘航艦約克鎮號），盡量擴大戰果。4時45分，從企業號起飛的攻擊機隊發現飛龍號，並打算同時攻擊護航的榛名號戰艦，但由於飛龍號成功迴避了最初的攻擊，原本要轟炸榛名號的機隊臨時決定轉向夾攻飛龍號；此舉雖然引起美軍機隊混亂，卻成功摧毀飛龍號。飛龍號的前部甲板遭到4枚炸彈命中，艦體嚴重毀壞並引發大火。大黃蜂號的SBD機隊在5時20分抵達時，判斷飛龍號已經受到致命傷，改為攻擊護航的筑摩號和利根號，只是無一命中。5時42分，美軍12架B-17轟炸機（4架來自中途島、8架來自夏威夷）加入攻擊。雖然B-17的炸彈沒有命中，機組員卻用重機槍掃射飛龍號甲板，摧毀一座防空砲及殺死數名砲手。
6月4日傍晚，美日雙方都在重整部隊。美軍方面，弗萊徹在5時32分率領第16特遣艦隊與第17特遣艦隊會合，留下休斯號驅逐艦看守已經棄艦的約克鎮號。當斯普魯恩斯向弗萊徹請求新的指示時，弗萊徹大方地回覆會跟隨斯普魯恩斯行動，直接將海戰指揮權交給斯普魯恩斯。斯普魯恩斯在傍晚收回所有飛機後決定避免與日軍夜戰，艦隊隨即掉頭向東移動，並在午夜轉向正北行駛，到6月5日清晨4時才再次向西航行，準備應付日軍第二日的攻勢。
中途岛在19点30分起飞了SBD轰炸机，并在整个夜间出动PT鱼雷艇搜索被击伤的日本航空母舰。都没有找到目标而返回。
日軍方面，南雲忠一在6月4日下午一直把搶救航艦放在首位，但各艦火勢始終無法控制。蒼龍號在10時45分下令棄艦，並在傍晚7時13分被磯風號用3枚魚雷擊沉 (另外也有觀點認為蒼龍號是爆炸沉沒）。加賀號在遇襲後仍然維持大約2至3節速度航行，損管人員和被困的工程人員一直在崗位拚死奮力滅火，但火勢仍完全失控。到下午1時，加賀號終於停駛並斷電。由於通訊系統癱瘓，很多官兵都不知道艦長已經陣亡，部分軍官開始自行下達棄艦命令，而天皇御照也在1時25分轉移到萩風號驅逐艦。加賀號在下午2時遭到美軍潛艦鸚鵡螺號攻擊，但鸚鵡螺號發射的4枚Mk 13魚雷全數故障，擊中加賀號的一枚魚雷更斷成兩截。下午4時40分，加賀號的飛行長天谷孝久以代理艦長的身分下令棄艦，南雲忠一也在下午5時向山本五十六報告加賀號已經毀棄的消息。加賀號最終在7時25分被萩風號發射魚雷擊沉。 也有觀點認為加賀號是爆炸沉沒，並非被日軍自行擊沉。
另外，赤城號的機庫在早上11時35分和下午3時先後發生兩次強烈爆炸，使得火勢逐漸失控。傍晚7時15分，日軍工程師確認赤城號無法修復，艦長青木泰二郎於7時20分下令棄艦，並請求艦隊予以擊沉。由於赤城號是機動部隊旗艦，並且歷史悠久，聯合艦隊的將領和參謀群對於是否放棄赤城號發生激烈爭論。幾經周折，山本五十六在6月5日清晨終於決定擊沉赤城號；當天清晨4時50分，舞風號、萩風號、野分號和嵐號輪流向赤城號各發射一枚魚雷，其中三枚擊中並爆炸，赤城號終於在清晨5時20分沉沒。飛龍號在6月4日傍晚7時10分仍能以28節速度航行，但由於火勢失控和二次爆炸，到晚間9時23分也失去動力而無法行駛。山口多聞在6月5日凌晨2時30分向山本五十六表示飛龍號已經無法挽回，艦長加來止男大佐則同時下令棄艦，不過兩人都決定留在飛龍號與艦共沉。5時10分，卷雲號向飛龍號發射2枚魚雷後離開，但飛龍號沒有立刻沉沒。
除了搶救航母，南雲忠一也有考慮與美軍艦隊進行水面作戰，但礙於情報混亂而遲遲沒有實行。至6月4日傍晚9時，機動部隊仍未掌握美軍艦隊的規模、位置和航行方向。南雲忠一估計美軍仍然有最少3至4艘航艦可以作戰，而且正在向西進擊，因此決定放棄計畫並率領機動部隊向西北撤退。由於大和號沒有收到最新情報，山本五十六仍在策劃水面作戰；他在晚間7時15分下令機動部隊和中途島攻略部隊立即追擊「已被擊潰、正在向東敗退」的美軍艦隊，又於7時20分下令栗田健男所率領的第7戰隊所屬巡洋艦群和伊168號潛艦前往砲擊中途島。在得悉機動部隊正在撤退後，山本五十六和宇垣纏對南雲忠一的決策失去耐性。晚上10時55分，山本五十六解除了南雲忠一的職務，把機動部隊交給近藤信竹指揮，並下令準備夜戰，但南雲忠一卻拒絕執行近藤信竹的調動命令，阿部弘毅也沒有釋出手下的巡洋艦（當時仍在拯救飛龍號的乘員）。
隨著時間過去，由於美軍艦隊遲遲未見蹤影，山本五十六終於面對現實，在6月5日0時15分下令南雲忠一和近藤信竹率領艦隊與自己會合，隨後命令栗田健男掉頭返航，但栗田健男卻要到凌晨2時30分才收到命令。這時候熊野號、鈴谷號、三隈號、最上號四艘重巡洋艦已經駛至距離中途島50浬海域，並且被美軍河豚號潛艇發現；在混亂之中，最上號以高速撞上三隈號，導致最上號艦艏嚴重損毀，只能以12節速度航行，栗田健男只好留下輕傷的三隈號保護最上號，自己率領另兩艘巡洋艦撤退。伊168號潛艦沒有接獲任何撤退命令，但向中途島發射8枚砲彈後就遭到岸砲還擊，被迫暫時後撤。凌晨2時55分，山本五十六始正式停止中途島作戰，下令全體艦隊撤退。
6月5日早上，山本五十六的主力部隊即將與近藤信竹會合，但南雲忠一的機動部隊殘部卻遲遲未見。山本五十六派出鳳翔號的老舊魚雷機前往搜索，而機動部隊要到下午1時才陸續與主力部隊會合。考慮到美軍的航艦集結到中途島，山本五十六批准細萱戊子郎重新進攻阿留申群島。上午7時，鳳翔號的魚雷機意外發現尚未沉沒的飛龍號及若干生還者，迫使山本五十六調派谷風號驅逐艦將其擊沉。上午8時，筑摩號偵察機發現了在海上漂浮的約克鎮號，仍在附近海域的伊168號潛艇隨即前往攻擊。
美軍艦隊在6月5日受到情報問題困擾。河豚號潛艇不但沒有攻擊受損的兩艘日軍重巡洋艦，更向珍珠港傳送殘缺不存的發現報告。要到上午6時，斯普魯恩斯才得悉日軍艦隊正在撤退。這使得第16特遣艦隊需要花費不少時間拉近距離。美軍隨後的偵察多次發現起火的飛龍號，使得斯普魯恩斯懷疑日軍仍有一艘航艦可以作戰。雖然中途島在日出前已經派出PBY和B-17索敵，但企業號和大黃蜂號到下午3時12分左右才開始派出飛機攻擊飛龍號。由於飛龍號早在上午9時前後沉沒，美日雙方都沒能找到預定目標。谷風號隨後遭到中途島和美軍艦載機集中攻擊，但只受到輕傷。由於天色漸黑，斯普魯恩斯下令企業號向天空打開探照燈，指引美軍艦載機返航降落。最上號和三隈號也在本日上午遭到中途島的B-17、SBD和SB2U轟炸機攻擊，不過沒有受損；2艘巡洋艦在下午獲得荒潮號和朝潮號2艘驅逐艦加入護航。
6月6日，美軍偵察機再次發現最上號和三隈號，並一度誤傳日軍艦隻編隊中有戰艦和航空母艦。企業號和大黃蜂號的機隊在早上9時開始攻擊2艘重巡洋艦。由於最上號在搶修時丟棄了所有魚雷，因而在遭到4枚炸彈擊中後並未引起連環爆炸，損傷相對輕微；同行的三隈號則遭到至少5枚炸彈擊中，並引爆艦上魚雷，使得大火一發不可收拾。下午三隈號開始棄艦後，這支日軍艦隊又遭到美軍第二波艦載機攻擊，但最上號和荒潮號只受到輕傷。三隈號最終在傍晚沉沒。不過，美軍的約克鎮號也在同日遭到日軍伊168號潛艦攻擊，使得進水程度急劇惡化，護航的哈曼號驅逐艦也遭擊沉。約克鎮號最終在6月7日早上沉沒。
山本五十六在6月6日和6月7日仍嘗試以瑞鳳號航艦引誘美軍艦隊夜戰，但斯普魯恩斯在6月6日晚上收回機隊後便撤出戰場補充油料。由於未能搜索到美軍艦隊，山本五十六在6月7日晚間率領艦隊掉頭返回日本。中途島海戰至此結束。