The division cut across the Elle River and advanced slowly toward Saint-Lô, fighting bitterly in the Normandy hedgerows. German reserves formed a new defensive front outside the town, and American forces fought a fierce battle with them two miles outside of the town. German forces used the dense bocage foliage to their advantage, mounting fierce resistance in house to house fighting in the ravaged Saint-Lô. By the end of the fight, the Germans were relying on artillery support to hold the town following the depletion of the infantry contingent. The 29th Division, which was already heavily underpowered after heavy casualties on D-Day, was even further depleted in the intense fighting for Saint-Lô. Eventually; the 29th was able to capture the city in a direct assault, supported by airstrikes from P-47 Thunderbolts.
After taking Saint-Lô, on 18 July, the division joined in the battle for Vire, capturing that strongly held city by 7 August. It continued to face stiff German resistance as it advanced to key positions southeast of Saint-Lô. It was then reassigned to V Corps, and then again to VIII Corps. Turning west, the 29th took part in the assault on Brest, which lasted from 25 August until 18 September. After a short rest, the division returned to XIX Corps and moved to defensive positions along the Teveren- Geilenkirchen line in Germany and maintained those positions through October. On 16 November, the division began its drive to the Roer River, blasting its way through Siersdorf, Setterich, Durboslar, and Bettendorf, and reaching the Roer by the end of the month. Heavy fighting reduced Jülich Sportplatz and the Hasenfeld Gut on 8 December.
From 8 December 1944 to 23 February 1945, the division was assigned to XIII Corps and held defensive positions along the Roer and prepared for the next major offensive. The division was reassigned to XIX Corps, and the attack jumped off across the Roer on 23 February, and carried the division through Jülich, Broich, Immerath, and Titz, to Mönchengladbach by 1 March 1945. The division was out of combat in March. In early April the division was reassigned to XVI Corps, where 116th Infantry helped mop up in the Ruhr area. On 19 April 1945 the division, assigned to XIII Corps, pushed to the Elbe River and held defensive positions until 4 May. Meanwhile, the 175th Infantry cleared the Klotze Forest. After V-E Day, the division was on military duty in the Bremen enclave. It was assigned to XVI Corps again for this assignment.