On July 18th McDowell's army reached Centreville. Five miles ahead a small meandering stream named Bull Run crossed the route of the Union advance, and there guarding the fords from Union Mills to the Stone Bridge waited 22,000 Southern troops under the command of Gen. Pierre G.T. Beauregard. McDowell first attempted to move toward the Confederate right flank, but his troops were checked at Blackburn's Ford. He then spent the next two days scouting the Southern left flank. In the meantime, Beauregard asked the Confederate government at Richmond for help. Gen. Joseph E. Johnston, stationed in the Shenandoah Valley with 10,000 Confederate troops, was ordered to support Beauregard if possible. Johnston gave an opposing Union force the slip and, employing the Manassas Gap Railroad, started his brigades toward Manassas Junction. Most of Johnston's troops arrived at the junction on July 20 and 21, some marching from the trains directly into battle.

On the morning of July 21, McDowell sent his attack columns in a long march north toward Sudley Springs Ford. This route took the Federals around the Confederate left. To distract the Southerners, McDowell ordered a diversionary attack where the Warrenton Turnpike crossed Bull Run at the Stone Bridge. At 5:30 a.m. the deep-throated roar of a 30-pounder Parrott rifle shattered the morning calm, and signaled the start of battle.

McDowell's new plan depended on speed and surprise, both difficult with inexperienced troops. Valuable time was lost as the men stumbled through the darkness along narrow roads. Confederate Col. Nathan Evans, commanding at the Stone Bridge, soon realized that the attack on his front was only a diversion. Leaving a small force to hold the bridge, Evans rushed the remainder of his command to Matthews Hill in time check McDowell's lead unit. But Evan's force was too small to hold back the Federals for long.

Soon brigades under Barnard Bee and Francis Bartow marched to Evan's assistance. But even with these reinforcements, the thin gray line collapsed and Southerners fled in disorder toward Henry Hill. Attempting to rally his men, Bee used Gen. Thomas J. Jackson's newly arrived brigade as an anchor. Pointing to Jackson, Bee shouted, "There stands Jackson like a stone wall! Rally behind the Virginians!" Generals Johnston and Beauregard then arrived on Henry Hill, where they assisted in rallying shattered brigades and redeploying fresh units that were marching to the point of danger.

About noon, the Federals stopped their advance to reorganize for a new attack. The lull lasted for about an hour, giving the Confederates enough time to reform their lines. Then the fighting resumed, each side trying to force the other off Henry Hill. The battle contiued until just after 4 p.m., when fresh Southern units crashed into the Union right flank on Chinn Ridge, causing McDowell's tired and discouraged soldiers to withdraw.

At first the withdrawl was orderly. Screened by the regulars, the three-month volunteers retired across Bull Run, where they found the road to Washington jammed with the carriages of congressmen and others who had driven out to Centreville to watch the fight. Panic now seized many of the soldiers and the retreat became a rout. The Confederates, though bolstered by the arrival of President Jefferson Davis on the field just as the battle was ending, were too disorganized to follow up their success. Daybreak on July 22 found the defeated Union army back behind the bristling defenses of Washington.