中途岛海战
中途島海戰（，）是第二次世界大戰中美國海軍和日本海军在中途島附近海域进行的一场大规模海战，主要戰鬥在1942年6月4日於中途島西北海域爆發，後續戰事一直持續至6月7日。
1942年初，日本陆海军双方初步達成南方作戰的戰略目標，但双方卻关于下一步行動存在意見分歧。在聯合艦隊司令長官山本五十六堅持下，大本營放棄向新畿內亞、斐濟、薩摩亞一帶的西南太平洋推進，轉為在6月4日進攻位於中太平洋、為夏威夷群岛西北屏障的中途島。然而山本的目標不是中途島，而是利用登陸艦隊引誘在珍珠港事件倖免於難的美軍航空母艦，再派遣日軍「機動部隊」的六艘航空母艦予以伏擊。不過，日本海軍有兩艘航母在5月珊瑚海海戰受損而無法參戰，導致剩下四艘航母參戰，兩軍艦隊實力因此差距縮小。而日軍無線電通訊密碼遭到美軍部分破譯對最後勝負至為關鍵。美國太平洋艦隊總司令切斯特·尼米茲根據破譯訊息提供的情報，迅速制訂反埋伏作戰，緊急召集三艘航母到中途島，美國集中的艦載機戰力得以與日軍相當，不過仍僅大略知道日軍戰術，並不清楚其艦隊的位置。結果，美軍在6月4日成功發現並伏擊了日方的航母艦隊，以一艘航空母舰與中途島軍事基地為代價，取得了击沉四艘日军航母的戰果。
中途島海戰是太平洋戰爭的轉捩點。日军损失4艘航空母舰、1艘重巡洋舰、全部約250架艦載機、3500名人员；美军损失1艘航空母舰、1艘驱逐舰、150架飞机、307名人员。美軍憑藉此場戰役的勝利，扭轉了開戰以來的被動，並恢復美日兩國在西太平洋的海權均勢。日本海軍則失去開戰以來的戰略主導權，隨後於西南太平洋與盟軍陷入消耗戰，在第二次世界大戰中漸走下坡。
1941年12月7日，日本發動南方作戰，進攻英國及荷蘭在東南亞的殖民地，並偷襲珍珠港的美國太平洋艦隊，引發太平洋戰爭。1942年3月，日軍已經攻佔香港、馬來亞、新加坡及關島，大致控制了緬甸、荷屬東印度及菲律賓的戰局。遠在西南太平洋，日軍也在美軍增援前搶先佔據了拉包爾，獲得新畿內亞的戰略要地。
不過，日軍對於後續戰略卻意見分歧。在東京大本營，海軍部先後提出兩個方案：第一，向印度洋方向進攻，佔領英屬錫蘭，鼓動印度民族主義者反抗英國，最終在波斯灣一帶與北非戰場的德國及義大利軍隊會合，此方案受海軍少將黑島龜人支持。第二，向西南太平洋方向進攻，取道新畿內亞、斐濟、薩摩亞一帶，切斷同盟國與澳洲之間的通訊，甚至佔領部分澳洲，阻止美國以南太平洋為反攻基地，此方案受海軍大將永野修身支持。陸軍部則認為戰爭的關鍵在於中國戰場，而且軍隊在緬甸逐漸出現補給困難，反對海軍在海外擴大戰線。至於聯合艦隊司令部方面，司令長官山本五十六認為美國航空母艦才是首要目標。早在珍珠港事件後，山本五十六和參謀宇垣纏便開始策畫在中太平洋一帶展開攻勢，派兵佔據夏威夷瓦胡岛，進而引誘並殲滅迎擊的美軍航母艦隊。山本五十六的策略是確保「機動部隊」（日本航母艦隊）可以在太平洋予取予求，趕在美國艾塞克斯級航空母艦和獨立級航空母艦服役前建立日軍防禦圈，爭取與美國談判的空間和籌碼。
1942年1月到4月，陸軍部、海軍部、聯合艦隊三方一直就戰略制訂爭持不下。在1月10日和13日的大本營會議，陸軍部和海軍部否決進攻夏威夷，決議在斐濟和薩摩亞展開行動。陸軍參謀總長杉山元和海軍軍令部總長永野修身都認為進攻夏威夷過於冒險，既要承受嚴重傷亡，又無法長期守備。相比之下，向斐濟和薩摩亞進攻能夠孤立澳洲，日本陸軍無需投入大量兵力，美國海軍亦必須遠離基地作戰，對日軍更為有利。隨後在2月到3月，海軍部亦放棄佔領錫蘭，改為派遣機動部隊空襲該處的英國海軍設施。這項計劃最終引發印度洋空襲（3月31日至4月10日）。
另一方面，山本五十六和宇垣纏雖然同意進攻夏威夷過於冒險，卻認為只要把登陸目標轉向中途島，仍然能夠引誘美國艦隊，並在暗地裡繼續策劃中太平洋方案。2月到3月，聯合艦隊司令部表面上配合海軍部的西南太平洋戰略，一方面派出機動部隊空襲達爾文（2月19日），又在2月20日至23日特別邀請大本營代表參與大和號戰艦的兵棋推演，研究進攻錫蘭，支援印度洋空襲。3月6日，美軍兩艘航空母艦（列星頓號和約克鎮號），再在10日突襲登陸萊城及薩拉毛亞的日軍。雖然日軍損傷輕微，陸軍卻非常擔心類似事態重演，負責該戰區的井上成美（第4艦隊司令長官，時駐特魯克環礁）更認為這是美軍反攻的徵兆。井上成美提請聯合艦隊派機動部隊增援西南太平洋，盡早佔領莫士比港（即MO作戰）。結果山本五十六派參謀三和義勇前往特魯克，並向井上成美表示可以在一個月後提供航母支援（三和義勇在3月13日抵達，當時第1航空艦隊即將開赴印度洋）。
4月2日，山本五十六透過參謀渡邊安次向大本營提交進攻中途島的方案，隨即引發連串爭論。在4月10日和14日的兩次會議，海軍軍令部第一部長福留繁的參謀批評山本五十六高估了中途島的戰略價值。他詳細分析山本五十六方案的多個漏洞，指中途島面積細小，無法建造軍港及大型機場，難以維持補給，更對歐胡島沒有直接威脅。美軍大可以棄守中途島，並派陸軍轟炸機定期空襲，無需冒險出動艦隊迎擊。三代辰吉重申海軍應以截斷美國與澳洲之間的通訊為首要目標，無法反駁的渡邊安次只能向山本五十六請示意見，然後回覆大本營稱山本五十六主意已決、甚至不惜再次請辭（山本五十六在1941年就曾要脅辭職，迫使永野修身同意偷襲珍珠港，而聯合艦隊司令部亦因此獲得了戰略制訂權力）。大本營雖然有所保留，最終再次向山本五十六屈服。作為交換條件，山本五十六必須同時進攻中途島（MI作戰）和阿留申群島（AL作戰）。山本五十六也向井上成美讓步，並在4月12日指示翔鶴號和瑞鶴號（隸屬第5航空戰隊）在空襲印度洋後經台灣馬公前往特魯克，並在MI和AL作戰前支援井上成美攻佔莫士比港（MO作戰）。
4月16日，福留繁將戰略方案呈交昭和天皇御前會議。兩日之後（18日），美軍航母突然出現在日本以東海域650英里，自大黄蜂号航空母舰派出陸軍轟炸機空襲東京（参见杜立特空袭）。這使得日軍上下大為震撼，無意中為山本五十六擺平反對聲音。此前，日軍對美國航母突襲本土雖然有所準備，並且在外海600-700英里範圍部署了漁船預警網（當時艦載機的續航距離約為200英里），卻沒有預料美國航母搭載航程較遠的陸軍轟炸機。事實上美軍企業號和大黃蜂號就遭到日本預警漁船發現，而正從印度洋返國的第1航空艦隊也派出赤城號、蒼龍號及飛龍號三艘航母，由馬公趕往追擊。但因為美軍航母早已調頭，結果日軍一無所獲。空襲東京本身造成的損傷極為輕微，但大本營和聯合艦隊對於無法保護皇居引以為恥，決心盡快殲滅美國航母並展開報復。4月20日，大本營參謀本部第一部長正式批准MI作戰，並表示陸軍願意提供部隊佔領中途島。
與日軍相反，美軍在太平洋戰爭爆發後完全處於戰略被動。美國艦隊總司令恩斯特·金恩和新任美國太平洋艦隊總司令切斯特·尼米茲，把防衛夏威夷及美國與澳大利亚之間的聯繫視為首要任務。雖然美國航母避過珍珠港襲擊，但太平洋艦隊只有列星頓號、薩拉托加號、約克鎮號、企業號四個航母特遣艦隊可供調遣，其中薩拉托加號1月遭到潛艇攻擊而要回國維修，而剛剛服役的大黃蜂號要到5月才加入太平洋艦隊。換言之，太平洋艦隊只能勉強兼顧兩面防線，沒有把握與日軍艦隊一決勝負。金恩和尼米茲不時在調動航母上意見分歧，但兩人大致上都同意保留實力。
1942年1月到4月，美軍航母除了在1月掩護陸戰隊增援美屬薩摩亞，基本上只進行報復攻擊，嘗試提升美軍士氣。2月1日，美軍航母發動馬紹爾及吉爾伯特群島突襲，再在2月17日空襲新畿內亞的拉包爾、萊城及薩拉毛亞。3月尼米茲又勉強同意釋出兩艘航母參與杜立德空襲，在4月18日象徵式空襲東京。
不過，太平洋艦隊卻擁有情報優勢，並迅速得悉日軍的MO作戰計畫。美國海軍在1924年於華盛頓海軍部設立代號的辦公室，負責破譯日軍通訊密碼，並在1932年和1936年先後於馬尼拉（代號Station Cast）和珍珠港（代號Station Hypo）設立分站。太平洋戰爭爆發前，馬尼拉分站負責破譯日本海軍行動通訊的，而珍珠港分站則負責日本海軍較少使用的將領通訊密碼。兩者都未能察覺日軍籌備突襲珍珠港。珍珠港事件後，尼米茲在12月17日下令珍珠港分站改為破譯JN-25，而馬尼拉分站則在菲律賓陷落前搬往澳洲墨爾本。到1942年3月，珍珠港分站成功破譯部分JN-25的關鍵字詞（比如「攻略部隊」、「拉包爾」），亦能透過JN-25的通訊流量推測日軍行動。4月5日，珍珠港分站截取到聯合艦隊向加賀號下達的命令，並發現「攻略部隊」與地區代號「MO」之間有所關連。情報站站長判斷MO是莫士比港的代號，隨即把破譯焦點放到井上成美及駐特魯克第4艦隊相關的通訊。4月12日，珍珠港分站又從英國的錫蘭情報站得悉日軍第5航空戰隊（翔鶴號和瑞鶴號）接獲「特別命令」，並發現日軍多艘軍艦正向特魯克集結。
得悉情報後，尼米茲判斷日軍即將派出兩艘至四艘航母及登陸部隊進攻莫士比港，但美軍的四艘航母卻有兩艘（企業號和大黃蜂號）前往空襲東京，只有列星頓號和約克鎮號可供調遣。縱然形勢不利，尼米茲決意派出兩艦迎擊，並在4月24日飛往三藩市與金恩商討作戰方案。當日珍珠港進一步破譯日軍通訊，準確指出日本航母將在5月3日左右進入珊瑚海，而登陸艦隊則會在5月10日進攻莫士比港。
5月4日至5月8日，珊瑚海海戰爆發。美軍雖然在海戰損失了列星頓號，而約克鎮號亦遭到重創，卻成功阻止MO作戰。井上成美被迫撤回登陸部隊，祥鳳號被擊沉，翔鶴號遭到重創，瑞鶴號亦損失過半艦載機。由於日本海軍把飛行機隊和所屬航母視為一體，沒有把機隊整編到另一艘航母的習慣（比如用翔鶴號的艦載機和機師填補瑞鶴號的空缺），使翔鶴號和瑞鶴號都無法參與6月的MI作戰。另外，井上成美因為撤出戰場而無法確定戰果，使得聯合艦隊司令部震怒。倘若美軍確實在珊瑚海失去兩艘航母，那麼MI作戰的目標就已經達成一半。雖然山本五十六在檢視翔鶴號（5月17日返抵吳市）的傷勢後對井上成美的決定有所改觀，但礙於MI作戰已經箭在弦上，聯合艦隊只能用四艘航母進攻中途島。
另一方面，美軍在珊瑚海海戰期間又在破譯JN-25上取得突破，並得悉日本海軍即將進攻中途島和阿留申群島。5月7日和8日，珍珠港情報站先後截獲「第一航空戰隊」（赤城號、加賀號）、「」（蒼龍號、飛龍號）、「第三戰隊兩艘戰艦」、「第八戰隊」（重巡洋艦利根號、筑摩號）準備在5月底行動。情報站同時透過通信流量，發現日軍正向塞班島集結，預備向「AF方位」進攻。羅徹福特率領的破譯人員一致認為「AF方位」是指中途島。他們早在3月就曾經破譯一架日本水上飛機的通訊：該架飛機向基地匯報中途島附近天氣時，表示自己正在飛越「AF」地區。然而珍珠港情報站的直轄上司（主理華盛頓OP-20-G辦公室）卻提出異議，認為「AF方位」是指斐濟和薩摩亞，並獲得金恩和海軍部附議。自珍珠港事件後，OP-20-G便經常和珍珠港情報站有所摩擦。列德文認為羅徹福特應該先向自己匯報，而不是透過中介參謀向尼米茲直接提供情報；羅徹福特則認為列德文不懂得破譯和處理情報。
尼米茲在5月15日上午聽取珍珠港情報站報告，同意「AF方位」是中途島的判斷，並決定主動迎擊日軍艦隊。他認為美軍擁有情報優勢，有很大機會能夠伏擊日軍航母。美軍只要能夠集結三艘航母，再加上中途島的陸上機場，足以與日軍四艘航母抗衡。此外，由於日軍航母遠離基地作戰，只要受到中等程度傷害，也很可能因無法維修而要報廢。尼米茲一方面說服金恩和海軍部接納珍珠港的情報，另一方面下令約克鎮號、企業號和大黃蜂號趕回珍珠港集結，並向中途島機場增派各種飛機。珍珠港情報站則想出向華盛頓驗證「AF方位」的辦法，在5月19日請中途島向珍珠港傳送公開的無線電信息，謊稱島上海水淡化設施故障。5月21日，珍珠港和墨爾本情報站同時截獲日軍信息，稱「AF方位缺乏饮用水」，確認「AF方位」即代表中途島。兩站更透過交換和比對信息，確認日軍只有四艘航母進攻中途島、翔鶴號和瑞鶴號已經回國，機動部隊將會在中途島西北面展開攻勢。5月25日，太平洋艦隊司令部參謀會議決定迎擊日軍，隨即展開下一步戰術部署。5月26日上午，珍珠港甚至破譯出機動部隊的進攻日期（中途島時間6月3日，聯合艦隊在當日稍後推遲到6月4日）。
聯合艦隊在4月底制訂了MI作戰的行動計畫。按照當時的方案，日軍假設美軍艦隊會遭到突襲，且必須從歐胡島出發迎擊。為引誘美軍艦隊進入陷阱，MI作戰會在N-3日（東京時間6月4日，中途島6月3日）與AL作戰同步展開。當日南雲忠一率領第1航空艦隊進入中途島西北海域，並派艦載機轟炸美軍機場。第1航空艦隊編有六艘航母（赤城號、加賀號、蒼龍號、飛龍號、翔鶴號和瑞鶴號）、兩艘高速戰艦（榛名號、霧島號）、兩艘重巡洋艦（利根號、筑摩號）、11艘驅逐艦（野分號、、萩風號、舞風號、、、、、磯風號、谷風號、濱風號）及擔任驅逐領艦的長良號。
MI作戰N-2日，第1航空艦隊會再次空襲中途島，為登陸部隊開路。雖然日軍認為美軍艦隊會在三日內抵達中途島海域，卻假設南雲忠一無須同時應付美國航母和支援中途島。第1航空艦隊亦只預備了10架飛機偵察和警備美軍艦隊。到N-1日，藤田類太郎會率領第11航空戰隊佔領中途島西面的，戰隊由兩艘水上機母艦（千歲號、）、驅逐艦早潮號及一艘運兵艦組成。
MI作戰N日（東京6月7日，中途島6月6日），日軍陸軍和海軍將登陸並佔領中途島。中途島攻略部隊由近藤信竹指揮，先鋒為的登陸艦艇，搭載約5,000名陸軍和海軍陸戰隊。由於陸軍和海軍各自擁有運兵艦，這些艦艇分別由橫須賀（陸）和吳市（海）出發，先在塞班島集結，然後由田中賴三的一艘輕巡洋艦（神通號）和11艘驅逐艦（黑潮號、親潮號、雪風號、天津風號、時津風號、不知火號、、陽炎號、）護送往中途島。緊隨登陸艦艇的是栗田健男四艘重巡洋艦（熊野號、鈴谷號、三隈號、最上號）及兩艘驅逐艦（、），負責登陸炮火支援。最後則是近藤信竹的主力部隊，包括兩艘高速戰艦（金剛號、比叡號）、四艘重巡洋艦（愛宕號、鳥海號、妙高號、羽黑號），七艘驅逐艦（村雨號、五月雨號、春雨號、夕立號、、、，外加驅逐領艦由良號）及一艘輕型航母（瑞鳳號）。
聯合艦隊司令部預計在N日當天便能夠攻佔中途島，而美軍艦隊會在登陸開始後才抵達中途島南面海域。近藤信竹將會餌誘美軍艦隊北上，南雲忠一的航母則會駛往中途島東北偏東約500英里水域埋伏，直到美軍上勾才南下突襲。山本五十六指揮的主力部隊部署在南雲忠一以西300英里，包括三艘主力戰艦（旗艦大和號、長門號、陸奧號）、一艘輕型航母戰鬥群（鳳翔號及護衛艦）、兩艘水上機母艦（千代田號、）及八艘驅逐艦（吹雪號、白雪號、叢雲號、初雪號、、、敷波號、綾波號，外加領艦川內號）。山本五十六刻意將主力部隊遠離作戰區域，避免美軍因為實力懸殊而拒絕交戰，但這也使得主力部隊無法有效支援南雲忠一和近藤信竹。山本五十六也認為美軍航母將會與戰艦分開行動，而他的主力部隊將負責對付美軍的戰艦編隊。
最後，山本五十六編組了高須四郎的阿留申警戒部隊，負責MI作戰和AL作戰的後備支援，並部署在主力部隊以北，包括四艘舊式戰艦（日向號、伊勢號、扶桑號、山城號）、兩艘輕巡洋艦（北上號、大井號）及12艘驅逐艦（、、、、、、、涼風號、、、時雨號、白露號）。當山本在N日南下與美軍交戰時，高須四郎會從後接替空缺。此外，山本五十六亦籌備第二次，派飛艇到歐胡島進行偵察，又調派的14艘潛艇到夏威夷群島海域，監察美國艦隊動向。倘若一切順利，第1航空艦隊會在殲滅美軍後返回特魯克，支援西南太平洋戰事，而各個戰艦編隊則會啟程返國，或者支援阿留申的作戰行動。
日本海軍部和聯合艦隊分別在5月5日和12日開始下達行動計畫指令，卻陸續出現問題。首先，翔鶴號和瑞鶴號在5月初珊瑚海海戰受損，被迫退出MI作戰。這使得機動部隊在進攻中途島前便失去125架艦載機（翔鶴號63架、瑞鶴號62架）。機動部隊其餘四艘航母共搭載了248架艦載機，包括赤城號60架（24架零戰、18架九九式俯衝轟炸機、18架九七式魚雷轟炸機）、加賀號74架（27架零戰、20架九九式、27架九七式）、飛龍號57架（21架零戰、18架九九式、18架九七式）、蒼龍號57架（21架零戰、16架九九式、18架九七式、兩架彗星俯衝轟炸機試作機）。第二，由於MI和AL作戰規模過於宏大，行動時間表又欠缺彈性，使得不少軍艦準備不足。南雲忠一在5月25日向司令部匯報，指機動部隊因為補給問題而無法如期在5月26日出發，迫使山本把MI和AL作戰順延一日（N-3日改為東京時間6月5日，中途島6月4日）。第六艦隊的潛艇因為維修延誤和避開美軍嚴密的空中偵察，要到中途島時間6月2日到4日之間才陸續抵達夏威夷海域。最後，K作戰因為美軍增派水上飛機到而無法執行。這使得聯合艦隊無法掌握美國艦隊動向，只能相信對方會在預想海域出現。
美軍的戰術部署相對簡單。和負責伏擊日軍航母，駐守中途島的飛機和潛艇則盡力攻擊日軍艦隊。尼米茲原本打算委任第16特遣艦隊司令小威廉·海爾賽負責戰事的全權指揮，但海爾賽卻因為嚴重皮膚炎而必須住院治理。海爾賽在5月26日率領企業號和大黃蜂號返抵珍珠港，並推薦自己的巡洋艦司令雷蒙德·斯普魯恩斯接管第16特遣艦隊，獲得尼米茲即時同意。由於斯普魯恩斯較第17特遣艦隊司令法蘭克·傑克·弗萊徹資淺，這也意味著弗萊徹將負責中途島的戰術指揮。5月27日，弗萊徹亦率領約克鎮號返抵珍珠港。當時約克鎮號估計需要90日才能夠完全修復，但日軍尚有一個星期便進攻中途島。尼米茲決定繞過多個海軍安全程序，命令船塢在三日內將約克鎮號修復至作戰狀態，並且把薩拉托加號留守夏威夷的航空聯隊用來填補約克鎮號的空缺。5月28日，斯普魯恩斯率領第16特遣艦隊率先出發，而弗萊徹則在5月30日率領第17特遣艦隊緊隨其後。
由於日軍航母將會在中途島西北海域展開攻擊，第16特遣艦隊和第17特遣艦隊預計在6月2日駛至中途島東北偏北約325英里水域埋伏，並在6月3日派艦載機襲擊機動部隊的左翼。考慮到日軍航母可能分開行動，第16特遣艦隊的兩艘航母會先行攻擊，而第17特遣艦隊則從後支援。尼米茲特別強調採用消耗戰策略，盡量避免與日軍航母或艦隊正面決戰。倘若美軍可能落敗，艦隊應該立即撤退，避免損失更多航母和巡洋艦。
第16特遣艦隊的主力為企業號和大黃蜂號兩艘航母，兩艦各自搭載了79架艦載機（企業號27架F4F戰鬥機、38架SBD無畏式俯衝轟炸機、14架TBD蹂躪者式魚雷轟炸機，大黃蜂號27架F4F、37架SBD、15架TBD）。此外，第16特遣艦隊尚有六艘巡洋艦（、、、、、）及九艘驅逐艦（菲爾普斯號、、、、巴區號、、、、）。第17特遣艦隊則由約克鎮號領軍，搭載75架艦載機（25架F4F、37架SBD、13架TBD）。艦隊尚有兩艘巡洋艦（、）及五艘驅逐艦（、羅素號、、安德森號、）。
此外，尼米茲亦向中途島緊急增派飛機駐守。海戰爆發前，中途島共有海軍飛機37架（31架PBY卡特琳娜水上飛機、6架TBF復仇者式轟炸機）、陸戰隊飛機68架（21架F2A戰鬥機、7架F4F、19架SBD、21架）、陸軍23架（19架B-17轟炸機、4架B-26轟炸機）。雖然中途島上的陸戰隊飛機不少已經落伍，但連同三艘航母在內，美軍仍在字面上擁有361架作戰飛機。最後，尼米茲調派多艘潛艇前往中途島，並在西面至北面海域組成環型防禦圈。由於時間倉促，美軍最終只有12艘潛艇（、、、、、鸚鵡螺號、、、、、、）趕及在海戰前抵達中途島，並組成第7.1特遣艦隊。此外，三艘潛艇（、、）組成第7.2特遣艦隊，在法國護衛艦環礁充當後援；四艘潛艇（、、、）則組成第7.3特遣艦隊，在歐胡島北部巡邏。
由於日軍將MI作戰順延一日，美軍艦隊在6月2日完全撲空。6月3日早上，美軍一架PBY偵察機在中途島以西700英里水域發現日軍艦隊。太平洋艦隊司令部把偵察報告和JN-25破譯信息對比，確定該艦隊為近藤信竹的中途島攻略部隊。尼米茲一方面提醒弗萊徹繼續待命，另一方面派出中途島的長程轟炸機進攻。陸軍的九架B-17轟炸機率先找到田中賴三的登陸艦艇，但所有攻擊都被日軍船艦迴避。海軍的四架改裝PBY偵察機隨後抵達，並向登陸艦隊發射Mk 13型魚雷，其中一枚魚雷擊中一艘補給艦，造成11人死亡，13人受傷。一位日軍軍官認為該枚魚雷彈頭沒有引爆。雖然這波空襲顯示MI作戰已經敗露，但山本五十六和南雲忠一都繼續按原有計畫行動。
6月4日上午4時30分，日軍四艘航母開始派出艦載機空襲中途島。赤城號和加賀號派出18架零式戰鬥機和36架九九式轟炸機，蒼龍號和飛龍號則派出18架零式戰鬥機和36架九七式轟炸機。機隊由友永丈市指揮，並在上午5時左右完成編隊，向中途島出發。為求保險，南雲忠一按照山本五十六的指示，在機庫保留大約一半的艦載機，應付隨時出現的美軍艦隊。赤城號和加賀號預先為機庫的九七式裝上848公斤（1,870磅）的九一式魚雷。至於蒼龍號和飛龍號的九九式雖然預備搭載250公斤（551磅）艦用炸彈，但因為慣常程序是在出擊前裝載，故此當時沒有裝備。
南雲忠一同時下令兩架空載的九七式和八架零式水上偵察機升空，搜索艦隊東半圓區域。不過，筑摩號往054方位角的偵察機因為故障而要提早折返，而1號偵察機（077方位角）更因為飛在雲層之上（另一說為飛錯方向），完全錯過了第16和第17特遣艦隊。利根號的兩架偵察機因為故障等原因，要到4時45分和5時正才成功起飛。
另一方面，上午4時，美軍陸戰隊也派出中途島的五架F4F和22架PBY，開始向西搜索日軍航母艦隊。陸軍則派出15架B-17再次攻擊田中賴三的登陸艦艇。到4時20分，弗萊徹派出約克鎮號六架F4F和10架SBD向北方索敵。由於企業號和大黃蜂號已經在飛行甲板預備攻擊機隊，斯普魯恩斯沒有派出F4F加入偵察。
上午5時34分至6時，美軍PBY先後發現日軍航母及前來空襲中途島的艦載機。中途島隨即派遣所有飛機前往轟炸日軍航母，而陸戰隊則調動25架戰鬥機攔截日軍機隊。由於美軍各軍種之間欠缺合作經驗，飛機性能參差不齊，使得攻擊非常混亂。陸戰隊的戰鬥機成功伏擊了六架轟炸機，但隨即被性能較佳的零式擊潰，只有11人生還。中途島所有可以執勤的飛機都在6時45分前成功起飛。日軍機隊在7時抵達中途島時，發現機庫和跑道已經幾乎清空，只能轟炸島上各種軍事設施。友永丈市即時用暗語向南雲忠一匯報，要求發動第二波攻擊。
南雲忠一在7時05分接獲友永丈市的信息，並初步同意發動第二波空襲，但此時機動部隊正忙於派出零式攔截中途島的美軍飛機。7時10分左右，海軍六架TBF轟炸機和陸軍四架B-26轟炸機率先抵達，分別向飛龍號和赤城號施放魚雷攻擊。雖然美軍所有魚雷都沒有命中，且只有三架飛機成功逃走，但一架B-26在墮海前幾乎撞上赤城號的艦橋。由於中途島的航空兵力對艦隊構成嚴重威脅，且美軍艦隊可能不會出現，南雲忠一決定爭取時間。他在7時15分下令赤城號和加賀號的九七式換裝對地的800公斤（1,760磅）炸彈，預備向中途島發動第二波空襲，而友永丈市的機隊則預算在回收後充當預備。蒼龍號和飛龍號機庫的九九式因為空載而沒有需要更換武器。
美軍方面，弗萊徹要到6時03分，才從珍珠港司令部接獲中途島PBY的偵察報告。由於PBY的報告只提及兩艘航母，弗萊徹擔心日軍航母可能分散行動，決定先派企業號和大黃蜂號的機隊攻擊，而約克鎮號則等待進一步報告再作行動。不過，當時海面吹起偏弱東風，企業號和大黃蜂號必須以時速25節以上背向日軍艦隊迎風航行，才可以讓艦載機有足夠升力起飛。換言之，企業號和大黃蜂號將會與日軍航母拉開距離，間接拉大艦載機的航距。斯普魯恩斯和首席航空參謀（Miles Browning）爭辯後，把起飛時間延遲至上午7時。
不過，企業號和大黃蜂號的出擊計畫卻有嚴重漏洞。首先，根據白朗寧的指令，最先起飛的F4F戰鬥機或SBD轟炸機需要在艦隊上空盤旋，等待最後起飛的TBD轟炸機，然後才一同前往預定目標。這使得F4F和SBD不必要地消耗大量燃料。第二，企業號的航空聯隊隊長（Clarence Wade McClusky）採取西南偏南的飛行方向，而大黃蜂號的聯隊隊長斯坦厄普·林（Stanhope C. Ring）則選擇接近正西的航向。兩條路線都完全錯過了機動部隊。大黃蜂號聯隊的航向可能是由艦長馬克·米契爾決定的，他推測尚未被發現的兩艘日軍航母位置在已知航母位置的80哩之後，以此決定航向。
上午7時05分，企業號和大黃蜂號的飛機相繼起飛，原本的出擊計畫很快就遭到打亂。企業號原先的起飛程序為（VF-6）八架F4F（航母空中警戒）、（VS-6）17架SBD、（VB-6）16架SBD、第6戰鬥機中隊10架F4F（轟炸機護航）、（VT-6）14架TBF。但第6轟炸機中隊有四架SBD在預熱引擎時故障無法起飛，而要使用甲板前方的升降台返回機庫。此外，由於第6轟炸機中隊裝備較重的1,000磅炸彈，要由艦艉飛行甲板起跑。這使得企業號需要等待它們全部起飛，然後才從機庫搬運第6戰鬥機中隊和第6魚雷機中隊的飛機就位。第6魚雷機中隊隨後又有飛機引擎故障，要花費時間搶修。結果到7時45分，最先出發的32架SBD和10架F4F仍然在企業號上空盤旋。由於企業號在7時40分截獲日軍偵察機的無線電通訊，斯普魯恩斯判斷艦隊行蹤已經敗露，下令企業號已經起飛的飛機即時出發。魚雷機中隊長（Eugene E. Lindsey）為了追上機群，採取較為西南航向，並與戰鬥機中隊長詹姆士·格雷（James S. Gray）約定稍後會合。
大黃蜂號的航空聯隊進一步打亂美軍的出擊計畫。大黃蜂號的起飛程序為（VF-8）10架F4F（轟炸機護航）、（VS-8）15架SBD、（VB-8）19架SBD、（VT-8）15架TBD，並一直持續到接近8時。但機群起飛後不久，魚雷機中隊長（John C. Waldron）認為聯隊隊長斯坦厄普·林（Stanhope C. Ring）的航向錯誤，並且在無線電互相爭吵。渥頓在8時30分違抗命令，率領魚雷機轉向西南飛行，恰巧被企業號的F4F發現。格雷誤以為林西的魚雷機已經追上，隨即在高空進行護航，反使得企業號魚雷機失去掩護。大黃蜂號的SBD和F4F最終沒有找到日軍艦隊，多架飛機更沒有聽從隊長命令而各自返航。
最後，弗萊徹在8時30分仍未獲得日軍另外兩艘航母的消息，決定派出約克鎮號部分機隊攻擊。與企業號和大黃蜂號不同，弗萊徹的航空參謀事先與航空聯隊隊長和四個中隊長交換意見，並同意先向西南飛行，若果沒有發現則轉向東北。弗萊徹亦採用更有效率的起飛程序，讓（VB-3）17架SBD和（VT-3）12架TBF率先起飛，然後再派（VF-3）六架F4F隨後加速追上會合。（VS-5）則留在約克鎮號待命。9時06分，約克鎮號的出擊機隊全數升空，但本艦也因為飛行作業而遠離企業號和大黃蜂號。
另一方面，日軍艦隊自從在7時空襲中途島之後，就接連遭到美軍潛艇、中途島陸上飛機和後來的艦載魚雷機攻擊。首先，鸚鵡螺號潛艇在6時58分發現友軍飛機向海平面飛去（事後證明是中途島的六架TBF），隨後北方天空出現大量防空砲火。鸚鵡螺號判斷該處為機動部隊所在，隨即向該處移動，卻遭到高空的零式發現。日軍艦隊隨即派出前來攻擊。鸚鵡螺號深潛迴避深水炸彈後，嘗試在水下追蹤艦隊。
南雲忠一在7時15分下令轟炸機更換武裝，準備向中途島發動第二波空襲。但在7時28分，利根4號偵察機（100方位角）向赤城號報告發現「10艘美軍軍艦」（第16特遣艦隊）。諷刺的是，4號機中途可能遭到美軍PBY攻擊，又為了補償早上的延誤而提早向北飛行，才誤打誤撞遇上美軍艦隊。南雲忠一在7時45分左右接獲報告，卻對情報感到困惑。若果利根4號機的情報屬實，那麼筑摩5號機（077方位角）應該會正面遭遇美軍艦隊，然而筑摩5號機卻沒有任何發現。南雲忠一即時以無線電要求利根4號機確認美軍艦隊組成。這則無線電有部分信息被企業號和珍珠港截獲，又反過來驅使企業號機隊提早出發。
南雲忠一此時陷入進退維谷境地。當時美軍艦隊在機動部隊側翼出現，幾乎肯定擁有航母，但日軍航母卻無法有效回應。由於早上迎擊美軍TBF和B-26的零式不少已經受損或者用盡彈藥，日軍四艘航母的飛行甲板正在回收和重新派出戰鬥機保護艦隊（共出擊31架，已降落17架）。此外，赤城號和加賀號機庫的九七式只有大約三分之一（15架）即將完成換裝，而友永丈市空襲中途島的機隊卻預計在8時15分（半小時後）返抵艦隊，並需要約莫一小時降落，佔用四艘航母的飛行甲板。換言之，南雲忠一若不立即下令赤城號和加賀號的15架九七式準備起飛、蒼龍號和飛龍號的九九式裝備炸彈，就要等待一個半小時後才能夠空襲中途島或應付美軍艦隊。然而，派出編組不齊的轟炸機隊並不符合日本海軍戰術教條，日軍航母也沒有足夠的零式戰鬥機進行掩護。
接獲7時45分的報告後，南雲忠一與參謀商討對策，同時等待利根4號機進一步報告。但日軍艦隊很快遭到美軍多方位襲擊，引起不少混亂。7時53分，霧島號戰艦發射煙霧，表示美軍空襲即將來臨。由於航母迴避轟炸時會使得飛行作業非常危險，南雲忠一權衡各種因素後，決定暫停更換九七式魚雷，先派戰機守護航母，後回收友永丈市的機隊，然後攻擊美軍艦隊。8時左右，的16架陸戰隊SBD由東南面迫近，而的12架B-17則同時從西北面高空而來。由於從未接受俯衝轟炸訓練，陸戰隊的SBD未能擊中飛龍號，亨德森本人也遭零式擊落陣亡。陸軍的B-17分成三隊攻擊赤城號、蒼龍號和飛龍號，但同樣無一命中。友永丈市的機隊在8時05分開始返抵母艦。由於無法降落，部分零式和九九式索性加入空戰。與此同時，鸚鵡螺號潛艇在7時55分伸出潛望鏡窺探機動部隊，並很快被日軍飛機發現。長良號隨即率領驅逐艦前來攻擊，鸚鵡螺號則再次深潛迴避。
正當日軍艦隊忙於迴避空中和水下攻擊，同時冒險緊急回收及派出戰鬥機之際，利根4號機先後傳來三次無線電報告。7時58分，4號機報告美軍艦隊航向（080方位），再在8時11分報告美軍艦隊為「五艘巡洋艦、五艘驅逐艦」，最後在8時20分稱「發現疑似一艘航母」。但礙於美軍持續攻擊，機動部隊仍然無法應對。8時24分，避過深水炸彈的鸚鵡螺號又再伸出潛望鏡，並向霧島號發射兩枚魚雷（其中一枚卡彈）。霧島號迅速迴避，並向鸚鵡螺號齊射右舷艦砲，嵐號則又再趕來投放深水炸彈，兩艦逐漸脫離機動部隊。8時27分，赤城號再次緊急轉向，迴避陸戰隊的12架SB2U轟炸機。這些SB2U最終轟炸了距離較近的榛名號戰艦，但依然無一命中。
到8時30分，美軍空襲終於暫告一段落。南雲忠一隨即下令回收友永丈市的機隊，預備攻擊美軍艦隊。利根4號機在8時45分報告發現「額外兩艘巡洋艦」，又在8時55分報告「10架魚雷機向機動部隊方向飛行」（約克鎮號的魚雷機）。為確認4號機的情報，南雲忠一派出蒼龍號的彗星試作機前往索敵，並勒令缺油的4號機留在原地。南雲在8時55分向山本五十六報告「在8時發現一艘航母、五艘巡洋艦、五艘驅逐艦，正開始追擊」，然後在9時17分下令艦隊轉向東北偏東（070方位）航行。當時蒼龍號和飛龍號尚未回收所有機隊，加賀號和赤城號則分別在8時50分和8時59分完成作業。蒼龍號和飛龍號可能開始在機庫為九九式預備250公斤炸彈，赤城號和加賀號的15架九七式也可能已經重新裝上魚雷。
南雲忠一下令艦隊轉向東北後僅一分鐘（9時18分），機動部隊發現美軍飛機迫近，隨即掉頭向西拉開距離，增派零式升空攔截。首先抵達的是大黃蜂號上私自脫隊、由渥頓率領的15架魚雷機。這些飛機在15分鐘內被零式全數擊落，只有一人生還，射向蒼龍號的魚雷也沒有命中，卻延誤了日軍航母機庫作業。蒼龍號和飛龍號也因為迴避攻擊而逐漸與赤城號和加賀號分散。利根4號偵察機在9時38分獲准返航，筑摩號則第二次派出5號偵察機，接替利根4號機的位置。
與此同時，企業號的14架魚雷機在遠處被機動部隊的防空砲火吸引，即時修正飛行路徑，由南面向加賀號發動攻擊，迫使機動部隊轉向北方。魚雷機中隊隊長林西一直無法與戰鬥機中隊隊長格雷聯絡，後者在雲隙目擊了大黃蜂號的機隊攻擊，卻沒有看到任何飛機返航，繼續在高空等待無線電通訊。由於沒有戰鬥機掩護，企業號的魚雷機攻勢到10時10分左右被零式擊潰，只有五架魚雷機成功返航，也未能擊中加賀號。不過，日軍的零式戰鬥機很快耗盡20毫米機砲彈藥，四艘航母亦只能加緊回收和派出戰鬥機。格雷也因為F4F燃料不足決定返航，並在9時52分打破無線電緘默，向企業號報告發現兩艘航母。這時候蒼龍號終於發現在上空盤旋已久的F4F，立即派出零式追擊，但一無所獲。
由於美軍所有攻勢都告失敗，南雲忠一判斷艦隊能夠保持安全。他在10時向山本五十六、近藤信竹、田中賴三和小松輝久報告，指機動部隊正轉向東北，將會進攻美軍的小規模艦隊，然後恢復轟炸中途島。登陸部隊可以按計畫準備進攻。不過，約克鎮號的12架魚雷機卻在10時06分由東南面迫近，使得機動部隊又再進入迴避狀態。約克鎮號的飛行聯隊是當天唯一沒有走散的美軍聯隊。發現日軍航母後，約克鎮號的17架俯衝轟炸機決定向北截擊拉開距離的日軍航母，而六架戰鬥機則掩護魚雷機隊攻擊飛龍號。面對超過15架零式戰鬥機，約克鎮號魚雷機最終只有五架成功施放魚雷，兩架成功返航。但第3戰鬥機中隊隊長約翰·薩奇卻與隊友首次運用「薩奇剪」戰術，不但有效拖延時間，更反過來共同擊落四架零式。約克鎮號魚雷機對飛龍號的攻勢一直持續至10時40分。
10時20分，美軍有兩組俯衝轟炸機隊同時迫近日軍艦隊。率領約克鎮號第3轟炸機中隊的17架SBD準備從東北面截擊蒼龍號，企業號航空聯隊隊長麥克拉斯基則率領第6轟炸機和第6偵察機中隊共33架SBD，由南面迫近赤城號和加賀號。企業號轟炸機隊起初的飛行路徑偏離機動部隊，一直毫無發現，飛機燃料也捉襟見肘。但麥克拉斯基和同僚決定繼續任務，並在9時35分轉向315方位進行方型搜索。9時55分，麥克拉斯基在高空發現嵐號驅逐艦：該艦在驅趕鸚鵡螺號後，以極速35節向北前往會合機動部隊，在海上留下清晰可見的航跡。麥克拉斯基立即率隊尾隨嵐號驅逐艦，終於在10時正發現日軍艦隊。
戰後很長時間，西方史學界都受到淵田美津雄的描述影響，認為日軍航母在10時20分已經準備好派出第二波空襲。這個觀點亦衍生大量揣測和傳聞，包括日軍航母為了快速更換裝備，使得飛行甲板佈滿炸彈、魚雷及加滿燃油的艦載機。但近年針對雙方參戰飛行員、日軍飛機出勤紀錄、以及美軍航空照片的考據，證實當時日軍航母的飛行甲板只有少量換班的零式戰鬥機，所有轟炸機隊都在機庫甲板待命。不過，由於日軍軍艦的觀察哨和防空砲都聚焦在低空的魚雷機，負責艦隊防空任務的零式戰鬥機群又忙於追趕薩奇的F4F和仍在攻擊日艦的約克鎮號魚雷機隊，故此沒有人注意到自高空來襲的美軍俯衝轟炸機群。
10時22分，加賀號多名官兵突然發現正在俯衝的美軍轟炸機，艦長大佐下令向左急轉，但為時已晚。由於溝通誤會，第6轟炸機中隊和第6偵察機中隊同時衝向加賀號，只有理查·海爾賽·貝斯特（第6轟炸機中隊長）和兩架僚機及時轉向攻擊距離較遠的赤城號；這導致加賀號遭到大量SBD連續轟炸，並被超過4枚500磅炸彈和若干枚1,000磅炸彈直接命中。加賀號的艦橋被炸毀，連同艦長岡田次作在內的多名軍官陣亡；另有多枚炸彈擊穿飛行甲板並在機庫爆炸，隨即引爆機庫甲板停放的大量飛機及武器，點燃了艦載機的航空燃料，滅火二氧化碳和水簾等消防設施也全數失靈。數分鐘內，加賀號的指揮系統瓦解，陷入一片火海。
蒼龍是下一艘遇襲的日軍航母。10時24分，蒼龍號正在回收零式戰機，並從無線電得悉加賀號中彈。幾乎同一時間，蒼龍號的觀察哨發現約克鎮號的俯衝轟炸機，艦長大佐隨即下令向左急轉。雖然蒼龍號的機動性較佳，但水平轟炸防禦力卻非常薄弱。約克鎮號有三架轟炸機擊中目標，其中第一枚炸彈擊中蒼龍號艦島前方靠近升降台位置，再在機庫甲板爆炸；第二枚擊中飛行甲板中央，並一直貫穿到下層甲板爆炸，切斷鍋爐的所有蒸汽管道，使得引擎停擺；第三枚炸彈則擊中飛行甲板後方。三枚炸彈都在機庫引發嚴重火災和二次爆炸，造成大量死傷。由於火勢無法控制，艦長柳本柳作大佐在10時45分下令棄艦，但由於通訊系統全毀，不少艦上官兵都沒有收到命令。
與此同時，赤城號正在朝向西北航行，嘗試與約克鎮號的魚雷機拉開距離。赤城號在10時20分看到美軍俯衝轟炸機攻擊西面的加賀號，隨即向右舷轉圈閃避。10時24分赤城號恢復直線航行不久，赫然發現放棄攻擊加賀號的三架美軍SBD正朝左舷迫近，遂再次向右急轉。美軍的第一枚炸彈在赤城號左舷落海爆炸並激起強勁水柱，沖毀了艦島的無線電天線；第二枚擊中飛行甲板中央升降台，在機庫引爆；第三枚在艦艉附近水下爆炸。赤城號起初的火勢沒有像加賀號和蒼龍號般劇烈，亦能夠保持穩定速度航行。到10時42分，赤城號的舵機故障並卡死在向右30度，機庫甲板中央的火勢也開始失控蔓延，逐漸波及艦橋。在艦長大佐和參謀長草鹿龍之介的敦促下，南雲忠一終於同意撤離，並轉移到長良號巡洋艦上指揮。
10時40分後，美軍飛機陸續調頭返回母艦，而第八戰隊司令阿部弘毅則暫時接掌機動部隊。10時45分，重巡洋艦筑摩號的5號偵察機報告發現美軍艦隊。阿部弘毅首先向山本五十六轉達情報，然後才報告赤城號、加賀號、蒼龍號遇襲大火，準備派飛龍號反擊。阿部弘毅在10時50分才向山口多聞（第二航空戰隊司令）下達進攻命令，但山口多聞早在三艘航母遇襲時就下令緊急準備機隊。他也在接下來的海戰中接手航空作戰的指揮權。10時54分，飛龍號派出小林道雄率領的第一波攻擊機隊（九架零式、18架九九式），全部飛機在10時58分升空完畢。
11時10分，日軍重巡洋艦筑摩的5號偵察機傳來美軍第17特遣艦隊的位置（機動部隊070方位，距離90英里），而蒼龍號的彗星試作機也在同一時間發現美軍第16特遣艦隊。由於彗星試作機的無線電故障，山口多聞仍然不知道美軍有兩支航艦部隊。在這段指揮空窗期，阿部弘毅和南雲忠一同時準備向第17特遣艦隊反擊。阿部弘毅等待南雲忠一轉移指揮期間，已經下令筑摩號等巡洋艦準備水面作戰。南雲忠一在11時27分登上長良號後，亦下令重組機動部隊，向東追擊美軍。近藤信竹在中午亦表示攻略部隊的高速戰艦正前來增援。
11時59分，約克鎮號的雷達發現小林道雄率領的攻擊機隊。這時約克鎮號正在回收早上出擊的機隊，只能依靠空中警戒的F4F、尚未降落的SBD、以及艦隊的防空砲攔截日機。小林道雄率領7架九九式成功突圍，其中3架成功擊中約克鎮號前方、中央和後方的飛行甲板。雖然小林道雄在攻擊過後失蹤，但這波空襲已造成約克鎮號的雷達失靈、兩座鍋爐毀壞，艦體也多處起火；約克鎮號因此逐漸失去動力，最終在12時40分於海上停駛，全艦通訊系統更一度中斷。弗萊徹立即決定將旗艦轉移至，留下艦長上校指揮搶修，約克鎮號的機隊則向東北飛到企業號和大黃蜂號降落。斯普魯恩斯同時調派多架F4F、2艘巡洋艦和2艘驅逐艦南下，增強約克鎮號的防空火力。
另一方面，日軍正在等待情報和整編艦隊，導致飛龍號的第二波攻擊機隊遲遲沒有起飛。山口多聞在12時10分從無線電得悉飛龍號派出的第一波機隊正在攻擊美軍航母，但不知其戰果如何。山本五十六在12時20分終於打破無線電緘默，下令暫緩佔領中途島和阿留申基斯卡島，並調派近藤信竹的戰艦、栗田健男的巡洋艦和瑞鳳號航母前往支援南雲忠一進行水面作戰。山本五十六也下令角田覺治盡快率領第4航空戰隊（龍驤號和隼鷹號）由阿留申海域南下增援。下午1時，山口多聞接獲其部下對一名約克鎮號飛行員戰俘的審訊結果，才終於得悉美軍有三艘航母參戰。不久，蒼龍號的彗星試作機返回飛龍號並投下訊息，確認美軍共有兩支航母艦隊。這促使南雲忠一再次下令派出偵察機索敵，而友永丈市則在1時30分率領飛龍號第二波攻擊機隊出發（6架零式，10架九七式）。由於約克鎮號已經受損，山口多聞特別指示友永丈市的機隊攻擊尚未受損的美軍航母，盡量擴大戰果。
在飛龍號第二波機隊出擊的同時，約克鎮號的損管人員即將撲滅火勢，部分鍋爐也開始恢復運作。1時40分，約克鎮號以20節的速度重新航行，艦長巴克麥斯特上校隨即下令為滯留艦上的第3戰鬥機中隊加油；但因友永丈市的攻擊機隊在1時55分被的雷達偵知，使得F4F須提早起飛。由於約克鎮號沒有起火冒煙，友永丈市誤以為自己進攻的是另一艘航母。友永丈市視死如生的出擊也衍生了不少逸聞，但實際上他並未如傳聞所說的擊中甚至撞上約克鎮號，而是被薩奇的F4F擊毀。薩奇對友永丈市的座機印象深刻，因為該架飛機尾翼塗有獨特的徽紋，而其駕駛員在左機翼和機身起火後仍出色地維持穩定飛行，直到進入攻擊距離和投下魚雷後才墜海解體。事實上，當天擊中約克鎮號的是橋本敏男和他的一架僚機。這兩枚魚雷在2時42分擊中約克鎮號左舷，引發大火，動力系統和發電機房遭到癱瘓，舵機亦因為斷電而卡死。不久，約克鎮號再次停駛，並且迅速進水而向左傾斜，迫使艦長巴克麥斯特上校在2時55分下令棄艦。
美軍航母在上午已經籌備第二波攻擊。弗萊徹在11時30分派出約克鎮號後備的10架SBD搜索西至北方海域，希望找到日軍剩餘的航母。約克鎮號第一次遇襲後，斯普魯恩斯非正式地接掌戰術指揮。他從企業號返航的SBD得悉日軍有四艘航母共同行動，但只有三艘嚴重受損。由於飛龍號的位置仍然不明，因此斯普魯恩斯否決白朗寧即時出擊的提案，只下令企業號和大黃蜂號準備機隊。當時美軍三艘航母的魚雷機隊幾乎全滅，戰鬥機和轟炸機也因為戰鬥和用盡燃料而損失慘重。企業號上只剩下36架SBD（14架來自約克鎮號），大黃蜂號則有21架。
下午2時45分，約克鎮號的SBD發現飛龍號，斯普魯恩斯立即下令企業號和大黃蜂號準備出擊，但大黃蜂號的航空指揮卻再次陷入混亂。3時10分，艦長馬克·密茲契上校臨時中斷作業並清空艦艉甲板，回收七架F4F和11架在中午迫降中途島的SBD。故此，當斯普魯恩斯下令在3時30分開始出擊時，密茲契只能匆忙重新準備出擊機隊。大黃蜂號要到4時正才開始派出機隊，但過程中又有兩架飛機故障而要回收，其時企業號的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時才再次向西航行，準備應付日軍第二日的攻勢。
日軍方面，南雲忠一在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分下令栗田健男的巡洋艦和趕往砲擊中途島。在得悉機動部隊正在撤退後，山本五十六和宇垣纏很快對南雲忠一的懦弱失去耐性。晚上10時55分，山本五十六解除了南雲忠一的職務，把機動部隊交給近藤信竹指揮，並下令準備夜戰，但南雲忠一卻拒絕執行近藤信竹的調動命令，阿部弘毅也沒有釋出手下的巡洋艦（當時仍在拯救飛龍號的乘員）。
隨著時間過去，由於美軍艦隊遲遲未見蹤影，山本五十六終於面對現實，在6月5日12時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日晚間率領艦隊掉頭返回日本。中途島海戰至此結束。
中途島海戰是太平洋戰爭其中一場關鍵戰役，對交戰雙方都有深遠影響。短期而言，日軍雖然仍能維持戰局，但日美海軍航空戰力之間的差距大為縮小，雙方在西太平洋的海權力量恢復平衡。由於盟軍確認不會在1942年登陸法國，美軍在6月底確認中途島海戰戰果後，金恩、尼米茲、道格拉斯·麥克阿瑟、喬治·卡特萊特·馬歇爾等美軍將領都同意把握機會，提前在西南太平洋展開反擊。瓜達爾卡納爾島戰役因此在8月爆發，迫使日軍進入戰略防禦階段。日本自此只能寄望在消耗戰中迫使美國談判。長遠而言，日軍因為軍事生產力不足，要到1944年才再有大型航空母艦服役（大鳳號）。其時美軍的艾塞克斯級和獨立級已開始大量服役，但日軍雖然有裝備，卻再也無法填補在西南太平洋消耗殆盡的精英飛行員，雙方實力逐漸變得懸殊。
日本在海戰後從各方面掩飾慘敗事實。昭和天皇指派統籌相關的新聞審查，並對外宣稱獲得大勝。聯合艦隊在6月14日泊岸後，所有受傷的軍人被立即送往醫院隔離，健康的軍人則逐步分散調派到西南太平洋前線。顯然這些受到重創的軍人，仍沒有辦法回到本土安養，全部人員都禁止與親友接觸。山本五十六雖然為戰敗負上全責，但大本營為了將戰果保密而沒有將其撤職。