Lee passa alors à l'offensive, menant une série de combats qui dura sept jours (du au ) et repoussant McClellan, dans une position moins menaçante, sur la James River. McClellan passa cependant à l'offensive le à la Bataille d'Oak Grove, durant laquelle deux divisions de l'armée de l'Union tentèrent de s'emparer de positions sur lesquelles elles pourraient disposer leur artillerie de siège. McClellan pensait renouveler son attaque le lendemain, mais il en fut détourné par un raid confédéré sur Mechanicsville (Beaver Dam Creek). Lee s'était rendu compte que les forces de McClellan, disposées de part et d'autre de la Chickahominy, pouvaient être défaites séparément. Il avait ordonné à la division de A.P. Hill de faire une démonstration de force face à Porter, pendant que Jackson, les contournant, prenait les positions de l'Union à revers. Jackson prit cependant du retard, alors que Hill attaquait sans attendre son arrivée et se faisait repousser avec de lourdes pertes. Alors que l'affrontement tournait à l'avantage de l'Union, McClellan ordonna à Porter de se retirer vers le sud et de rejoindre le gros de l'armée de l'Union, craignant qu'il ne se retrouve encerclé par les forces confédérées pendant la nuit. Porter établit une ligne de défense à proximité de Gaines's Mill, couvrant les ponts qui enjambaient la Chickahominy.