Zijn carrière begon bij Envigado Fútbol Club in de Colombiaanse voetbalcompetitie. Hij werd op huurbasis overgenomen door Boca Juniors, waar hij bijna uitsluitend in het jeugdteam speelde. Hij kwam tot slechts twee wedstrijden in het eerste elftal. Boca probeerde hem permanent over te nemen, maar dat lukte niet en hij ging voor een andere verhuurbeurt naar Saint-Étienne. In zijn debuut bij Saint-Étienne tegen Espanyol scoorde hij tweemaal; zijn debuut in de Ligue 1 was op 14 oktober 2006 en zijn eerste doelpunt maakte hij in april 2007. De deal tussen Envigado en Saint-Étienne werd permanent gemaakt en Guarín tekende voor vier jaar bij de Franse club.
Op 10 juli 2008 tekende hij een contract bij de Portugese topclub FC Porto. Zijn transfer betrof een ruildeal; Paulo Machado vertrok op huurbasis naar Saint-Étienne. In de beginperiode bij Porto was Guárin meer een reserve dan een basiskracht, maar later werd hij belangrijk omdat hij het beslissende doelpunt maakte dat Porto opnieuw kampioen maakte. Toen Meireles vertrok naar Liverpool stond hij vaker in de basis bij Porto.
Op 31 januari 2012 vertrok Guarín op huurbasis naar Internazionale voor anderhalf miljoen euro. Bij Inter moest hij de naar Paris Saint-Germain vertrokken middenvelder Thiago Motta vervangen. De club had de optie om hem voor 13,5 miljoen euro permanent over te nemen; de overname vond daadwerkelijk plaats, maar voor tweeënhalf miljoen euro minder. Zijn eerste doelpunt voor de Nerazurri maakte Guarín op 30 augustus. In de seizoenen 2012/13 en 2013/14 speelde hij elk 32 competitieduels, met in beide seizoenen vier doelpunten.[1]
Guarín tekende in januari 2016 bij Shanghai Shenhua FC in China. Hij werd voor 13 miljoen overgenomen van Internazionale. In juli 2019 vertrok hij transfervrij naar de Braziliaanse competitie en ging spelen voor CR Vasco da Gama. In 2021 keerde hij terug naar zijn geboorteland om te spelen voor Millonarios FC. Guarín tekende bij de club uit de hoofdstad Bogotá op 1 januari 2021 een eenjarig contract.