Williams took a pass from Javier Morales and fired the game-winner through traffic in the 74th minute.
Real Salt Lake had gone into the match with a one-point lead in the home-and-home total goals series.
Morales and Robbie Finley scored the other goals for Real Salt Lake, which trailed 2-0 in the first half after Guillermo Barros Schelotto scored for the Crew in the first 35 minutes of the match.
Real Salt Lake will play the winner of the New England-Chicago series next week. New England has a one-goal advantage in that series.