La dernière bataille des Sept Jours eut lieu le , à Malvern Hill et se traduisit par des assauts sans coordination contre les défenses de l'Union, renforcées par des batteries d'artillerie et des canonnières de l'escadrille de la James River. McClellan n'était pas présent en personne sur le champ de bataille, mais à bord de la canonnière "Galena". Les commandants de l'Union se concertèrent pour choisir la position des leurs troupes, mais aucun d'entre eux n'assuma le commandement en chef des forces engagées. L'armée de Lee perdit hommes, contre pour l'Union. Alors que le commandement de l'Union estimait qu'il pouvait tenir tête à de nouvelles attaques confédérées, McClellan ordonna à son armée de faire retraite vers Harrison's Landing.