W lipcu 2006 ponownie trafił do Chile, gdzie został graczem klubu Cobreloa. W ciągu roku rozegrał tam 39 spotkań i zdobył 26 bramek. W lipcu 2007 przeszedł do meksykańskiego Atlasu Guadalajara. W Primera División Mexico zadebiutował 5 sierpnia 2007 w zremisowanym 1:1 meczu z Deportivo Toluca. W styczniu 2008 został wypożyczony do chilijskiego CSD Colo-Colo. Latem 2008 został wykupiony przez Colo Colo. W sumie spędził tam półtora roku. W tym czasie został tam królem strzelców Primera División Chile, a z klubem zdobył mistrzostwo Clausura 2007 oraz 2008 roku.

W lipcu 2009 za 4,2 miliona euro został sprzedany do niemieckiej Borussii Dortmund. W Bundeslidze zadebiutował 8 sierpnia 2009 w wygranym 1:0 pojedynku z 1. FC Köln. 3 października 2009 w wygranym 1:0 spotkaniu z Borussią Mönchengladbach zdobył pierwszą bramkę w Bundeslidze.

2 maja 2012 Borussia ogłosiła, że od sezonu 2012/2013 Barrios będzie grał w chińskim klubie Guangzhou Evergrande. Kwota transferu wyniosła 8,5 mln €.

W sierpniu 2013 roku przeszedł do rosyjskiego Spartaka Moskwa. W sierpniu 2014 roku został wypożyczony do drużyny grającej w Ligue 1 – Montpellier HSC. Od połowy 2015 do 2017 był zawodnikiem brazylijskiego klubu SE Palmeiras.