En approchant des défenses de Richmond, l'armée de l'Union se trouva divisée par le cours de la rivière Chickahominy, ce qui eut pour effet de limiter la capacité des troupes à aller et venir le long du front. McClellan laissa le gros de son armée au nord de la Chickahominy, s'attendant à ce que McDowell s'avance en provenance du nord de la Virginie. Seuls deux corps d'armée (le IV et le III) se trouvaient au sud de la rivière. Sous la pression de Jefferson Davis, le président confédéré, et de Robert E. Lee, son conseiller militaire, Johnston décida d'attaquer les forces moins nombreuses au sud de la rivière, espérant que les eaux de la Chickahominy, gonflées par de fortes et récentes précipitations, empêcheraient McClellan de traverser. Le et le juin, la Bataille de Seven Pines, également connue sous le nom de Bataille de Fair Oaks, ne se déroula pas comme l'avait prévu Johnston, trahi par des cartes inexactes, des attaques confédérées sans coordination et l'arrivée de renforts de l'Union, qui passèrent la rivière en dépit de la crue. La bataille fut tactiquement indécise, mais elle eut deux effets stratégiques. Tout d'abord, Johnston fut blessé au combat et remplacé par Robert E. Lee, un commandant beaucoup plus agressif qui allait par la suite conduire l'Armée de Virginie du Nord vers bien d'autres victoires. Ensuite, le général McClellan décida d'abandonner l'offensive pour organiser le siège en attendant l'arrivée des renforts qu'il avait demandés à Lincoln. Il perdit alors un avantage stratégique qu'il ne retrouva jamais.