Cork defender Damien Cahalane's dismissal after a second yellow card on 51 minutes was a key moment when the Rebels led 0-15 to 1-11.
Within eight minutes Waterford were 3-14 to 0-18 ahead after goals from Jamie Barron and Austin Gleeson.
Barron fired another goal in injury-time as Waterford's Conor Gleeson and Cork's Patrick Horgan were sent off.
The duo received straight red cards after a spot of off-the-ball stick-jabbing and Gleeson's participation in the All-Ireland decider on 3 September could now be in doubt.
In front of 72,022 spectators at Croke Park, Michael Walsh's early goal gave Waterford a 1-1 to 0-2 lead after a brilliant crossfield ball from Shane Bennett.
With Cork keeper Anthony Nash making a magnificent save to deny Pauric Mahony, the sides were level on several occasions in the opening period before Waterford edged into a 1-7 to 0-9 lead by the interval.
Cork had the better of the 15 minutes after half-time and they led by one when the game's pivotal moment arrived as Cahalane saw red after a high tackle on Conor Gleeson landed him a second yellow card.
Cahalane had been handed his first caution in the first half for a pull across Austin Gleeson's legs.
Waterford, who went into Sunday's game without suspended sweeper Tadhg de Burca, have not won an All-Ireland senior title since 1959, only the second in their history, and they last reached the final in 2008.
The last of Galway's four titles came in 1988 although they have lost six finals since then - including the 2012 and 2015 deciders.
Waterford beat Munster champions Cork 4-19 to 0-20 to set up an All-Ireland Hurling final against Galway.