С 1997 по 2009 год выступал за клуб «Астон Вилла». В 2009 году перешёл в клуб английской Премьер-лиги «Манчестер Сити». С 2000 по 2012 годы играл за сборную Англии. В 2010 в товарищеской встрече против Египта в первый раз стал капитаном сборной. Рекордсмен по количеству сыгранных матчей в английской Премьер-лиге — 653 игры[3].
Барри перешёл в «Астон Виллу» из «Брайтон энд Хоув Альбиона» как юниор в 1997 году. Он сыграл свой первый матч за «Астон Виллу» 2 мая 1998 против «Шеффилд Уэнсдей». Барри стал универсальным игроком и капитаном, играя как центральный защитник, затем как левый защитник. Тогда он начал играть на позиции левого полузащитника, а после стал центральным полузащитником.
Во время игры лиги против «Болтон Уондерерс» 28 октября 2007 года, Барри стал самым молодым игроком, сыгравшим в 300 играх Премьер-лиги (в возрасте 26 лет 247 дней), опередив бывшего рекордсмена Фрэнка Лэмпарда[5]. В ноябре 2007 «Астон Вилла» наградила Барри свидетельством о пребывании в течение 10 лет в клубе.
С апреля 2008 Барри, приближаясь к 400 играм за «Астон Виллу», являлся ветераном команды[6]. 5 апреля 2008 года Барри помог обыграть «Болтон Уондерерс» (4:0), и тем самым закончить неудачную серию из 5 поражений подряд. Он забил два гола и дважды ассистировал[7].
В мае 2008 «Ливерпуль» сделал серию предложений купить Барри, все из которых были отклонены «Астон Виллой»[8]. Барри публично раскритиковал своего менеджера, Мартина О’Нила, обвиняя его в умышленном удержании игрока в клубе, и впоследствии заявил о желании присоединиться к «Ливерпулю», чтобы играть в Лиге чемпионов[9]. О’Нил отрицал это заявление[10].
Барри вернулся в состав «Астон Виллы», в матче кубка УЕФА против «Хабнарфьордюра», в котором он забил и «Вилла» победила 4:1. Этот гол стал первым голом Барри в еврокубках, с того момента, как он забил пенальти в матче Кубка Интертото против «Сельты» в 2000 году. 18 сентября 2008 Барри сыграл свой 400 матч за «Виллу». В этом матче Барри забил пенальти, и «Вилла» победила 3:1. Также он забил за «Виллу» в первом матче группового этапа Кубка УЕФА против «Аякса» 23 октября 2008 года. Из-за слухов о переходе в течение сезона 2008/09, О’Нил передал капитанскую повязку центральному защитнику Мартину Лаурсену. К Лаурсену звание капитана вернулось после ухода Барри летом 2009 года. Всего Гарет Барри сыграл 441 матч за «Астон Виллу», забил 52 мяча.
«Манчестер Сити»
2 июня 2009 года Барри перешёл за £12 миллионов в «Манчестер Сити» и подписал с ним пятилетний контракт[11]. Он выбрал майку с номером 18. Многие поклонники «Астон Виллы» публично раскритиковали Барри за этот переход, однако, он написал письмо в газету «Бирмингем Мэил», в котором он благодарил поклонников «Виллы» за поддержку, утверждая, что переход в «Сити» был для него «новым вызовом»[12]. Превосходя ожидания, он забил свой первый гол за «Сити» в межсезонье, играя против «Селтика»[13]. А первый гол в Премьер-лиге Барри забил в игре против «Манчестер Юнайтед» 20 сентября, сделав счёт 1:1, но в итоге «Сити» проиграл 3:4[14]. Три дня спустя он забил в матче Кубка лиги против «Фулхэма», сделав счёт 1:1; «Сити» в дополнительное время довёл матч до победы[15]. 16 февраля Гарет забил мяч в ворота «Сток Сити» и спас команду от поражения[16]. В сезоне 2010/11 Гарет завоевал первый трофей в составе «горожан» — в финале Кубка Англии «Манчестер Сити» выиграл у «Сток Сити» 1:0.
В сезоне 2011/12 Барри стал чемпионом Англии, сыграв в 34 матчах премьер лиги и внеся весомый вклад в победу «горожан» в чемпионате.
«Эвертон»
2 сентября 2013 Барри перешёл в «Эвертон» на условиях годичной аренды. 8 июля 2014 клуб выкупил трансфер футболиста.
«Вест Бромвич Альбион»
В летнее трансферное окно 2017 года Барри перешёл в «Вест Бромвич Альбион». Игра против лондонского «Арсенала» 25 сентября 2017 года стала 633-й в карьере Гарета. Тем самым, футболист стал рекордсменом Премьер-лиги по количеству проведенных матчей. 27 августа 2020 года Барри объявил о завершении игровой карьеры[3].
Карьера в сборной
Барри — экс-капитан сборной Англии до 18 лет. В сборной до 21 года он дебютировал в игре против Чешской Республики в 1998 году. Всего Гарет сыграл 27 игр в молодёжной команде. Этот рекорд позже был побит бывшим одноклубником Барри по «Астон Вилле» Джеймсом Милнером.
Барри был вызван в сборную Англии после четырёхлетнего перерыва 2 февраля 2007 года. Он вышел на поле, заменив Стивена Джерарда, в товарищеском матче против Испании 7 февраля 2007 года, играя на позиции левого полузащитника. Англия проиграла 0:1 благодаря голу Андреса Иньесты. 25 мая 2007 года, Барри играл за Англию B в матче с Албанией. Гарет вновь сыграл в сборной в матче с Германией на «Уэмбли», заменив Майкла Каррика.
Заменив травмированного Оуэна Харгривза, Барри начал матч против Израиля 8 сентября 2007 года на позиции центрального полузащитника. Также он вышел в основе в матче против России 12 сентября 2007 года. Эксперты Би-би-сиИэн Райт и Алан Ширер называли Барри лучшим игроком сборной Англии в этих двух матчах[17].
Гарета официально назвали лучшим игроком сборной Англии в отборочном матче чемпионата Европы 2008 против Эстонии. Позже его вызвал в сборную Фабио Капелло для игры в своём первом матче во главе сборной Англии против Швейцарии 6 февраля 2008 года. Барри забил свой первый гол за сборную Англии в игре против Тринидада и Тобаго 1 июня 2008 года[18].
6 июня в игре против Казахстана, он забил свой второй гол, замкнув навес Стивена Джерарда. Барри появлялся в каждой из десяти игр сборной Англии в течение сезона 2008/09 вплоть до игры против Андорры 10 июня 2009 года, в которой он не играл по причине перебора жёлтых карточек.
Вывел команду с капитанской повязкой на игру против Египта на «Уэмбли» (3:1). Из за травмы лодыжки, полученной в игре за «Манчестер Сити», он мог не поехать на чемпионат мира 2010 года[19], но всё же был включён в заявку и, пропустив первую игру, сыграл в остальных трёх.