Villafaña tekende op 25 juli 2007 een profcontract bij Chivas USA. In zijn eerste seizoen speelde hij slechts één keer voor het eerste team, in een met 3-0 gewonnen wedstrijd tegen New York Red Bulls. Hij maakte zijn eerste doelpunt voor Chivas op 17 mei 2008 tegen DC United. Een week later kreeg hij zijn eerste basisplaats. In diezelfde wedstrijd scoorde hij opnieuw een doelpunt en zorgde daarmee voor de winst van Chivas op Colorado Rapids. Een week later scoorde hij opnieuw. Dit keer tegen Columbus Crew. Hij kreeg de bijnaam El Sueño (Spaans voor de droom) nadat hij drie keer achter elkaar scoorde in drie wedstrijden. Op 12 december 2013 tekende hij bij de Portland Timbers. Daar maakte hij zijn debuut op 17 mei 2014 tegen Columbus Crew.[1] In december 2015 maakte Villafaña de overstap naar Santos Laguna, actief in de Mexicaanse Liga MX, nadat hij in twee jaar tijd meer dan vijftig wedstrijden voor Portland speelde.[2]
Villafaña was een belangrijke speler voor het voetbalelftal onder 20 van de Verenigde Staten. Hij maakte zijn eerste doelpunt voor het elftal tegen Argentinië. Verder speelde hij wedstrijden tegen de reserves van A-elftallen als River Plate, Bolton Wanderers (2–0 winst) en Manchester United (2–1 winst).