中途岛海战

日軍部署

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日），美軍航艦突然出現在日本以東海域，派出陸軍轟炸機空襲東京。這使得日軍上下大為震撼，無意中為山本五十六擺平反對聲音。日軍對美國航艦突襲本土雖然有所準備，並且在外海600到700英里範圍部署了漁船預警網（當時艦載機的續航距離約為200英里），卻沒有預料美國航艦搭載航程較遠的陸軍轟炸機。事實上美軍企業號和大黃蜂號就遭到日本預警漁船發現，而正從印度洋返國的第1航空艦隊也派出赤城號、蒼龍號及飛龍號三艘航艦，由馬公趕往追擊。但因為美軍航艦早已調頭，結果日軍一無所獲。空襲東京本身造成的損傷極為輕微，但大本營和聯合艦隊對於無法保護皇居引以為恥，決心盡快殲滅美國航艦並展開報復。4月20日，大本營參謀本部第一部長田中新一正式批准MI作戰，並表示陸軍願意提供部隊佔領中途島。

美軍情報準備、珊瑚海海戰影響

與日軍相反，美軍在太平洋戰爭爆發後完全處於戰略被動。美國艦隊總司令恩斯特·金恩和新任美國太平洋艦隊總司令切斯特·尼米茲，把防衛夏威夷及美國與澳洲之間的聯繫視為首要任務。雖然美國航艦避過珍珠港襲擊，但太平洋艦隊只有列星頓號、薩拉托加號、約克鎮號、企業號四個航艦特遣艦隊可供調遣，其中薩拉托加號更在1月遭到潛艦攻擊而要回國維修，而剛剛服役的大黃蜂號要到5月才加入太平洋艦隊。換言之，太平洋艦隊只能勉強兼顧兩面防線，沒有把握與日軍艦隊一決勝負。金恩和尼米茲不時在調動航艦上意見分歧，但兩人大致上都同意保留實力。1942年1月到4月，美軍航艦除了在1月掩護陸戰隊增援美屬薩摩亞，基本上只進行報復攻擊，嘗試提升美軍士氣。2月1日，美軍航艦發動馬紹爾及吉爾伯特群島突襲，再在2月17日空襲新幾內亞的拉包爾、萊城及薩拉毛亞。3月尼米茲又勉強同意釋出兩艘航艦參與杜立德空襲，在4月18日象徵式空襲東京。
不過，太平洋艦隊卻擁有情報優勢，並迅速得悉日軍的MO作戰計畫。美國海軍在1924年於華盛頓海軍部設立代號OP-20-G的辦公室，負責破譯日軍通訊密碼，並在1932年和1936年先後於馬尼拉（代號Station Cast）和珍珠港（代號Station Hypo）設立分站。太平洋戰爭爆發前，馬尼拉分站負責破譯日本海軍行動通訊的JN-25密碼，而珍珠港分站則負責日本海軍較少使用的將領通訊密碼。兩者都未能察覺日軍籌備突襲珍珠港。珍珠港事件後，尼米茲在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」地區。然而珍珠港情報站的直轄上司約翰·R·列德文（主理華盛頓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日南下與美軍交戰時，高須四郎會從後接替空缺。此外，山本五十六亦籌備第二次K作戰，派飛艇到歐胡島進行偵察，又調派小松輝久的第六艦隊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特遣艦隊（Task Force 16）和第17特遣艦隊（Task Force 17）負責伏擊日軍航艦，駐守中途島的飛機和潛艦則盡力攻擊日軍艦隊。尼米茲原本打算委任第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架SB2U擁護者式俯衝轟炸機）、陸軍23架（19架B-17轟炸機、4架B-26轟炸機）。雖然中途島上的陸戰隊飛機不少已經落伍，但連同三艘航艦在內，美軍仍在字面上擁有361架作戰飛機。最後，尼米茲調派多艘潛艦前往中途島，並在西面至北面海域組成環型防禦圈。由於時間倉促，美軍最終只有12艘潛艦（抺香鯨號、飛魚號、河豚號、鱒魚號、茴魚號、鸚鵡螺號、石班魚號、海豚號、貓鯊號、烏賊號、白楊魚號、鼠尾鱈號）趕及在海戰前抵達中途島，並組成第7.1特遣艦隊。此外，三艘潛艦（獨角鯨號、潛水者號、鱗魨號）組成第7.2特遣艦隊，在法國護衛艦環礁充當後援；四艘潛艦（大海鰱號、白斑狗魚號、長鬚鯨號、黑鱸號）則組成第7.3特遣艦隊，在歐胡島北部巡邏。

前奏（6月3日）

由於日軍將MI作戰順延一日，美軍艦隊在6月2日完全撲空。6月3日早上，美軍一架PBY偵察機在中途島以西700英里水域發現日軍艦隊。太平洋艦隊司令部把偵察報告和JN-25破譯信息對比，確定該艦隊為近藤信竹的中途島攻略部隊。尼米茲一方面提醒弗萊徹繼續待命，另一方面派出中途島的長程轟炸機進攻。陸軍的九架B-17轟炸機率先找到田中賴三的登陸艦艇，但所有攻擊都被日軍船艦迴避。海軍的四架改裝PBY偵察機隨後抵達，並向登陸艦隊發射Mk 13型魚雷魚雷，其中一枚魚雷擊中一艘補給艦，造成11人死亡，13人受傷。一位日軍軍官認為該枚魚雷彈頭沒有引爆。雖然這波空襲顯示MI作戰已經敗露，但山本五十六和南雲忠一都繼續按原有計畫行動。

中途島空襲（6月4日0430-0715）

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磅）炸彈，預備向中途島發動第二波空襲，而友永丈市的機隊則預算在回收後充當預備。蒼龍號和飛龍號機庫的九九式因為空載而沒有需要更換武器。

美軍第一波艦載機出擊（0700-0900）

美軍方面，弗萊徹要到6時03分，才從珍珠港司令部接獲中途島PBY的偵察報告。由於PBY的報告只提及兩艘航艦，弗萊徹擔心日軍航艦可能分散行動，決定先派企業號和大黃蜂號的機隊攻擊，而約克鎮號則等待進一步報告再作行動。不過，當時海面吹起偏弱東風，企業號和大黃蜂號必須以時速25節以上背向日軍艦隊迎風航行，才可以讓艦載機有足夠升力起飛。換言之，企業號和大黃蜂號將會與日軍航艦拉開距離，間接縮短艦載機的航距。斯普魯恩斯和首席航空參謀米爾斯·白朗寧（Miles Browning）爭辯後，把起飛時間延遲至上午7時。
不過，企業號和大黃蜂號的出擊計畫卻有嚴重漏洞。首先，根據白朗寧的指令，最先起飛的F4F戰鬥機或SBD轟炸機需要在艦隊上空盤旋，等待最後起飛的TBD轟炸機，然後才一同前往預定目標。這使得F4F和SBD不必要地消耗大量燃料。第二，企業號的航空聯隊隊長克勞倫斯·麥克拉斯基（Clarence Wade McClusky）採取西南偏南的飛行方向，而大黃蜂號的聯隊隊長斯坦厄普·林（Stanhope C. Ring）則選擇接近正西的飛行路徑。兩條路線都完全錯過了機動部隊。
上午7時05分，企業號和大黃蜂號的飛機相繼起飛，原本的出擊計畫很快就遭到打亂。企業號原先的起飛程序為第6戰鬥機中隊（VF-6）八架F4F（航艦空中警戒）、第6偵察機中隊（VS-6）17架SBD、第6轟炸機中隊（VB-6）16架SBD、第6戰鬥機中隊10架F4F（轟炸機護航）、第6魚雷機中隊（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）約定稍後會合。
大黃蜂號的航空聯隊進一步打亂美軍的出擊計畫。大黃蜂號的起飛程序為第8戰鬥機中隊（VF-8）10架F4F（轟炸機護航）、第8偵察機中隊（VS-8）15架SBD、第8轟炸機中隊（VB-8）19架SBD、第6魚雷機中隊（VT-6）15架TBF，並一直持續到接近8時。但機群起飛後不久，聯隊內部的人事矛盾卻在此時觸發。魚雷機中隊隊長約翰·渥頓（John C. Waldron）認為聯隊隊長斯坦厄普·林（Stanhope C. Ring）的飛行路線錯誤，並且在無線電互相爭吵。渥頓在8時30分違抗命令，私自率領魚雷機轉向西南飛行，恰巧被企業號的F4F發現。格雷誤以為林西的魚雷機已經追上，隨即在高空進行護航，反過來使得企業號魚雷機失去掩護。大黃蜂號的SBD和F4F最終沒有找到日軍艦隊，多架飛機更沒有聽從隊長命令而各自返航。
最後，弗萊徹在8時30分仍未獲得日軍另外兩艘航艦的消息，決定派出約克鎮號部分機隊攻擊。與企業號和大黃蜂號不同，弗萊徹的航空參謀事先與航空聯隊隊長和四個中隊隊長交換意見，並同意先向西南飛行，若果沒有發現則轉向東北。弗萊徹亦採用更有效率的起飛程序，讓第3轟炸機中隊（VB-3）17架SBD和第3魚雷機中隊（VT-3）12架TBF率先起飛，然後再派第3戰鬥機中隊（VF-3）六架F4F隨後加速追上會合。第5偵察機中隊（VS-5）則留在約克鎮號待命。9時06分，約克鎮號的出擊機隊全數升空，但本艦也因為飛行作業而遠離企業號和大黃蜂號。

美軍陸上機攻勢、日軍發現美軍艦隊（0700-0917）

另一方面，日軍艦隊自從在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架九七式也可能已經重新裝上魚雷。

美軍魚雷機攻勢（0917-1040）

南雲忠一下令艦隊轉向東北後僅一分鐘（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分。

美軍俯衝轟炸機攻勢、日軍三艘航艦重創（1020-1045）

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連續轟炸，超過四枚500磅炸彈和若干枚1,000磅炸彈直接命中。加賀號的艦橋被炸毀，連同岡田次作在內的多名軍官陣亡。美軍亦有多枚炸彈擊穿飛行甲板並在機庫爆炸，隨即引爆機庫甲板停放的大量飛機武器，點燃艦載機的航空燃料，滅火二氧化碳和水簾等設施也全數失靈。數分鐘內，加賀號的指揮系統瓦解，陷入一片火海。
蒼龍是下一艘遇襲的日軍航艦。10時24分，蒼龍號正在回收零式戰機，並從無線電得悉加賀號中彈。幾乎同一時間，蒼龍號的哨兵發現約克鎮號的轟炸機，柳本柳作大佐隨即下令向左急轉。雖然蒼龍號的機動性較佳，但水平轟炸防禦卻非常薄弱。約克鎮號有三架飛機擊中目標，其中第一枚炸彈擊中蒼龍號艦島前方近升降台位置，再在機庫甲板爆炸；第二枚擊中飛行甲板中央，並一直貫穿到下層甲板爆炸，切斷鍋爐的所有蒸汽管道，使得引擎停擺；第三枚炸彈則擊中飛行甲板後方。三枚炸彈都在機庫引發嚴重火災和二次爆炸，造成大量死傷。由於火勢無法控制，柳本柳作在10時45分下令棄船，但由於通訊系統全毀，不少水兵都沒有收到指令。
與此同時，赤城號正在向西北航行，嘗試與約克鎮號的魚雷機拉開距離。赤城號在10時20分看到轟炸機攻擊西面的加賀號，隨即向右舷轉圈閃避。10時24分赤城號恢復直線航行不久，赫然發現放棄攻擊加賀號的三架SBD正由左舷迫近，再次向右舷急轉。美軍的第一枚炸彈在赤城號左舷落海爆炸並擊起浪花，沖毀了艦島的無線電天線；第二枚擊中飛行甲板中央升降台，在機庫引爆；第三枚在艦艉附近水下爆炸。赤城號起初的火勢沒有像加賀號和蒼龍號般劇烈，亦能夠保持穩定速度航行。到10時42分，赤城號的舵機故障並卡死在向右30度，機庫甲板中央的火勢也開始失控蔓延，逐漸波及艦橋。在艦長青木泰二郎大佐和參謀長草鹿龍之介敦促下，南雲忠一終於同意撤離，並轉移指揮到長良號巡洋艦。

日軍反擊、約克鎮號重創（1045-1455）

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、以及艦隊的防空炮攔截日機。小林道雄率領七架九九式成功突圍，其中三架成功擊中約克鎮號前方、中央和後方的飛行甲板。雖然小林道雄在攻擊過後失蹤，這波空襲使得約克鎮號的雷達失靈，兩座鍋爐毀壞，艦體多處起火。約克鎮號因此逐漸失去動力，最終在12時40分於海上停駛，全艦通訊系統更一度中斷。弗萊徹立即決定將旗艦轉移至阿斯托里亞號重巡洋艦，留下艦長艾略特·畢馬斯達指揮搶修，約克鎮號的機隊則向東北到企業號和大黃蜂號降落。斯普魯恩斯同時調派多架F4F、兩艘巡洋艦和兩艘驅逐艦南下，增強約克鎮號的防空火力。
另一方面，日軍正在等待情報和整編艦隊，使得飛龍號的第二波機隊遲遲沒有起飛。山口多聞在12時10分從無線電得悉第一波機隊正在攻擊美軍航艦，卻不知道戰果。山本五十六在12時20分終於打破無線電緘默，下令暫緩佔領中途島和阿留申基斯卡島，並調派近藤信竹的戰艦、栗田健男的巡洋艦和瑞鳳號航艦支援南雲忠一水面作戰。山本五十六也下令角田覺治盡快率領第4航空戰隊（龍驤號和隼鷹號）由阿留申海域南下增援。下午1時，山口多聞從下屬審問約克鎮號一名俘虜，才終於得悉美軍有三艘航艦參戰。不久，蒼龍號的彗星試作機返回飛龍號並投下信息，確認美軍共有兩個航艦編隊。這促使南雲忠一再下令派出偵察機索敵，而友永丈市則在1時30分率領飛龍號第二波機隊出擊（六架零式，10架九七式）。由於約克鎮號已經受損，山口多聞特別指示友永丈市的機隊攻擊尚未受損的美軍航艦，盡量擴大戰果。
飛龍號第二波機隊出擊同時，約克鎮號的搶管人員即將撲滅火勢，部分鍋爐也開始恢復運作。1時40分，約克鎮號以20節速度重新航行，畢馬斯達隨即下令為滯留艦上的第3戰鬥機中隊加油，但友永丈市的機隊在1時55分進入彭薩科拉號重巡洋艦的雷達，使得F4F要提早起飛。由於約克鎮號沒有起火冒煙，友永丈市誤以為自己進攻的是另一艘航艦。友永丈市視死如生的出擊也衍生了不少逸聞，但他沒有如傳聞所說擊中甚至撞上約克鎮號，而是被薩奇的F4F擊毀。薩奇對友永丈市的座機印象深刻，因為該架飛機尾翼塗上獨特徽紋，而機師在左機翼和機身起火後出色地維持穩定飛行，直到進入攻擊距離和投下魚雷後才墮海解體。事實上當天擊中約克鎮號的是橋本敏男和他的一架僚機。這兩枚魚雷在2時42分擊中約克鎮號左舷，引發大火，動力系統和發電機房遭到癱瘓，舵機亦因為斷電而卡死。不久約克鎮號再次停駛，迅速入水向左傾斜，迫使畢馬斯達在2時55分下令棄船。

美軍第二波艦載機出擊、飛龍號重創（1445-1455）

美軍航艦在上午已經籌備第二波攻擊。弗萊徹在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時45分，企業號的機隊發現飛龍號，打算同時攻擊護航的榛名號戰艦，但由於飛龍號成功迴避最初的攻擊，轟炸榛名號的機隊決定調頭夾攻飛龍號。這舉動雖然引起美軍機隊混亂，卻成功摧毀飛龍號。飛龍號的前部甲板遭到四枚炸彈擊中，艦體嚴重毀壞並引發大火。大黃蜂號的機隊在5時20分抵達時，判斷飛龍號已經受到致命傷，改為進攻護航的筑摩號和利根號，只是無一命中。5時42分，美軍12架B-17（四架來自中途島，八架來自夏威夷）加入攻擊。雖然B-17的炸彈沒有命中，機員卻用重機槍掃射飛龍號甲板，摧毀一座防空炮及殺死數名炮手。

雙方調整部署（6月4日下午至6月5日早上）

6月4日傍晚，美日雙方都在重整部隊。美軍方面，弗萊徹在5時32分率領第16特遣艦隊與第17特遣艦隊會合，留下休斯號驅逐艦看管已經棄船的約克鎮號。當斯普魯恩斯向弗萊徹請求新的指示時，弗萊徹大方地回覆會跟隨斯普魯恩斯行動，直接將海戰指揮權交給斯普魯恩斯。斯普魯恩斯在傍晚回收所有飛機後決定避免與日軍夜戰，艦隊隨即掉頭向東，在午夜轉向正北，到6月5日清晨4時才再次向西航行，準備應付日軍第二日的攻勢。
日軍方面，南雲忠一在6月4日下午一直把搶救航艦放在首位，但各艦火勢始終無法受控。蒼龍號在10時45分下令棄船，並在傍晚7時13分被磯風號以三枚魚雷自沉。加賀號在遇襲後仍然維持大約2至3節速度航行，搶管人員和被困的工程師一直在崗位拼死奮鬥，但火勢卻完全失控。到下午1時，加賀號終於停駛斷電。由於通訊系統癱瘓，很多官兵都不知道艦長已經陣亡，部分軍官開始自行下達棄船命令，而天皇御照也在1時25分轉移到萩風號驅逐艦。加賀號在下午2時遭到潛伏的鸚鵡螺號攻擊，但鸚鵡螺號發射的四枚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分，卷雲號向飛龍號發射兩枚魚雷後離開，但飛龍號沒有即時沉沒。
除了搶救航艦，南雲忠一亦有考慮與美軍艦隊水面作戰，但礙於情報混亂而遲遲沒有實行。到6月4日傍晚9時，機動部隊仍未掌握美軍艦隊的規模、位置和航行方向。南雲忠一估計美軍仍然有最少三至四艘航艦可以作戰，而且正在向西進擊，決定放棄計劃並率領機動部隊向西北撤退。由於大和號沒有收到最新情報，山本五十六仍在策劃水面作戰。他在7時15分下令機動部隊和中途島攻略部隊立即追擊「已被擊潰、正在向東敗退」的美軍艦隊，再在20分下令栗田健男的巡洋艦和伊168號潛艦趕往炮擊中途島。得悉機動部隊正在撤退，山本五十六和宇垣纏很快對南雲忠一的懦弱失去耐性。晚上10時55分，山本五十六解除了南雲忠一的職務，把機動部隊交給近藤信竹指揮，下令準備夜戰。但南雲忠一卻拒絕執行近藤信竹的調動命令，阿部弘毅也沒有釋出手下的巡洋艦（當時仍在拯救飛龍號的船員）。
隨著時間過去，由於美軍艦隊遲遲未見蹤影，山本五十六終於面對現實，在6月5日12時15分下令南雲忠一和近藤信竹率領艦隊與自己會合，隨後命令栗田健男調頭，但栗田健男卻要到2時30分才收到命令。這時候熊野號、鈴谷號、三隈號、最上號四艘重巡洋艦已經駛至距離中途島50海里水域，並且被美軍河豚號潛艦發現。混亂之中，最上號以高速撞上三隈號，艦艏嚴重損毀，只能以12節速度航行。栗田健男只好留下輕傷的三隈號保護最上號，率領其餘兩艘巡洋艦撤退。伊168號潛艦沒有接獲任何撤退命令，但向中途島發射八炮後就遭到岸炮還擊，被迫暫時撤出。2時55分，山本五十六正式取消中途島作戰，下令全體艦隊撤退。

後續戰事（6月5日至7日）

6月5日早上，山本五十六的主力部隊即將與近藤信竹會合，但南雲忠一的機動部隊殘部卻遲遲未見。山本五十六派出鳳翔號的老舊魚雷機前往搜索，而機動部隊要到下午1時才陸續與主力部隊會合。考慮到美軍的航艦集結到中途島，山本五十六批准細萱戊子郎重新進攻阿留申群島。上午7時，鳳翔號的魚雷機意外發現尚未沉沒的飛龍號及若干生還者，迫使山本五十六調派谷風號驅逐艦將其擊沉。上午8時，筑摩號偵察機發現了在海上漂浮的約克鎮號，仍在附近海域的伊168號潛艦隨即前往攻擊。
美軍艦隊在6月5日受到情報問題困擾。河豚號潛艦不但沒有攻擊受損的兩艘日軍重巡洋艦，更向珍珠港傳送殘缺不存的發現報告。要到上午6時，斯普魯恩斯才得悉日軍艦隊正在撤退。這使得第16特遣艦隊需要花費不少時間拉近距離。美軍隨後的偵察多次發現起火的飛龍號，使得斯普魯恩斯懷疑日軍仍有一艘航艦可以作戰。雖然中途島在日出前已經派出PBY和B-17索敵，企業號和大黃蜂號要到下午3時12分左右才開始派出飛機攻擊飛龍號。由於飛龍號早在9時前後沉沒，美日雙方都沒能找到預定目標。谷風號隨後遭到中途島和美軍艦載機集中攻擊，但只受到輕傷。由於天色入黑，斯普魯恩斯下令企業號向天打開射燈，指引美軍艦載機返航降落。最上號和三隈號也在上午遭到中途島的B-17、SBD和SB2U轟炸機攻擊，不過沒有受損。兩艘巡洋艦在下午獲得荒潮號和朝潮號兩艘驅逐艦加入護航。
6月6日，美軍偵察機再次發現最上號和三隈號，並一度誤傳編隊有戰艦和航空母艦。企業號和大黃蜂號的機隊在早上9時開始攻擊兩艘重巡洋艦。由於最上號在搶修時丟棄了所有魚雷，故此遭到四枚炸彈擊中沒有引起連鎖爆炸，損傷相對輕微。同行的三隈號遭到最少五枚炸彈擊中，並引爆艦上魚雷，使得大火一發不可收拾。下午三隈號開始棄船後，日軍艦隊遭到美軍第二波艦載機攻擊，但最上號和荒潮號只受到輕傷。三隈號最終在傍晚沉沒。不過，美軍的約克鎮號卻在同日遭到伊168號潛艦攻擊，使得入水程度急劇惡化，護航的哈曼號驅逐艦也遭擊沉。約克鎮號最終在6月7日早上沉沒。
山本五十六在6月6日和6月7日仍嘗試以瑞鳳號引誘美軍艦隊夜戰，但斯普魯恩斯在6月6日晚上回收機隊後便撤出戰場補油。由於搜索不果，山本五十六在6月7日晚率領艦隊掉頭返回日本。中途島海戰至此結束。

影響

中途島海戰是太平洋戰爭其中一場關鍵戰役，對交戰雙方都有深遠影響。短期而言，日軍雖然仍能維持戰局，但日美海軍航空戰力之間的差距大為縮小，雙方在西太平洋的海權力量恢復平衡。由於盟軍確認不會在1942年登陸法國，美軍在6月底確認中途島海戰戰果後，金恩、尼米茲、道格拉斯·麥克阿瑟、喬治·卡特萊特·馬歇爾等美軍將領都同意把握機會，提前在西南太平洋展開反擊。瓜達康納爾島戰役因此在8月爆發，迫使日軍進入戰略防禦階段。日本自此只能寄望在消耗戰中迫使美國談判。長遠而言，日軍因為軍事生產力不足，要到1944年才再有大型航空母艦服役（大鳳號）。其時美軍的艾塞克斯級和獨立級已開始大量服役，日軍也無法填補在西南太平洋消耗殆盡的精英飛行員，雙方實力逐漸變得懸殊。
日本在海戰後從各方面掩飾慘敗事實。昭和天皇指派安藤紀三郎統籌相關的新聞審查，並對外宣稱獲得大勝。聯合艦隊在6月14日泊岸後，所有受傷的軍人被立即送往醫院隔離，健康的軍人則逐步分散調派到西南太平洋前線。全部人員都禁止與親友接觸。山本五十六雖然為戰敗負上全責，但大本營為了將戰果保密而沒有將其撤職。