В 2004 году, в возрасте 18 лет, Гарай дебютировал на профессиональном уровне как игрок команды своего родного города, «Ньюэллс Олд Бойз», в аргентинской Примере. Вначале он находился в запасе[4]. В стартовом составе Гарай вышел только в предпоследнем туре, где помог «Ньюэллс Олд Бойз» победить и стать чемпионами Аргентины[7].
За три года в «Расинге» Гарай сыграл 60 матчей и забил 12 мячей[5]. В чемпионате 2006/07 «Расинг» занял десятое место, что было лучшим результатом после возвращения команды в испанскую Примеру (2002)[8][9][10][11][12]. Закрепившийся в основном составе 20-летний Гарай сыграл в 31 матче, только один раз выйдя на замену, и забил 9 мячей (7 из них — с пенальти)[13]. Очень важным для аргентинского игрока стал домашний матч 30 тура с мадридским «Реалом». Хотя его команда проигрывала 0:1, Гарай принёс ей победу, дважды реализовав пенальти. Отставание «Реала» от «Барселоны» увеличилось до пяти очков[14], что в итоге не позволило «Реалу» выиграть чемпионат[12].
В чемпионате 2007/08 «Расинг» занял шестое место и попал в Кубок УЕФА[15]. Гарай получил травму, сыграв только 15 матчей и забив 3 мяча. Было объявлено, что он выбыл до конца сезона[16]. Однако Гарай восстановился и сыграл в ещё 7 матчах[17]. Им заинтересовались такие известные клубы, как «Манчестер Юнайтед», «Ливерпуль», «Ювентус»[18] и «Барселона». Шестилетний контракт Гарай заключил с «Реалом», однако в чемпионате 2008/09 продолжал играть за «Расинг» на правах аренды (24 матча и 2 мяча)[7]. «Королевский клуб» тем временем рассматривал увеличение контрактов с теми футболистами, на которых собирался строить команду. В этот список входил и Эсекьель Гарай, считавшийся, начиная со следующего сезона, игроком «Реала»[19].
Проводя свой первый сезон в «Реале», Гарай 19 раз вышел в стартовом составе и только один раз на замену, забил 1 мяч[20]. Однако в следующем сезоне, когда главным тренером команды стал Жозе Моуринью[21], аргентинский защитник играл только в 5 матчах, а 13 провёл на скамейке запасных[22].
«Бенфика»
Недовольный Гарай хотел сменить клуб. Летом 2011 года «Реал» и «Бенфика» договорились о трансфере в 5,5 миллионов евро, а Гарай подписал четырёхлетний контракт с португальским клубом. Он сразу стал игроком основного состава «Бенфики», за три года сыграл в чемпионате Португалии 78 матчей и забил 9 мячей[7].
«Зенит»
В мае 2014 года с «Бенфикой» начал переговоры клуб «Зенит» из Санкт-Петербурга[7], и в результате летом Гарай стал игроком российской команды[5]. Был подписан пятилетний контракт[23]. Сумма трансфера оценивалась в 6 млн евро, при этом «Бенфика» получила около 40 %, «Реал Мадрид» — около 50 %, а третьи лица — около 10[24][25]. В первом же официальном матче за «Зенит» с кипрским АЕЛ (3 отборочный раунд Лиги чемпионов) допустил ошибку, после которой соперники забили единственный и победный гол. Этот матч проходил 30 июля[26], а 13 июля Гарай играл в финале чемпионата мира[27]. После чемпионата он сразу же присоединился к «Зениту», не имея возможности отдохнуть[23]. Первый мяч за «Зенит» Гарай забил 6 декабря 2014 года в ворота «Краснодара».
21 ноября 2015 забил мяч в ворота «Урала» ударом со штрафного (3:0). 3 декабря 2015 года забил пенальти в ворота «Уфы» на 86-й минуте сравняв счёт в конце матча (1:1). По итогам декабря Гарай был признан лучшим игроком месяца. В общей сложности Гарай провёл в «Зените» 75 матчей, в которых забил три гола и отдал четыре результативные передачи.
«Валенсия»
1 сентября 2016 года «Зенит» продал Гарая в «Валенсию» ориентировочно за 20 млн евро[28]. Игроком так же предметно интересовался «Челси»[29] и предлагал большую сумму[30], но по семейным обстоятельствам игрок принял решение играть в Испании[31].
Гарай забил в своём дебютном матче в игре против «Бетиса» (2:3)[32].
1 июля 2020 года Гарай покинул «Валенсию» по истечении контракта. Впоследствии не смог продолжить карьеру из-за хронических проблем с тазобедренным суставом. Официально объявил о завершении карьеры 16 июля 2021 года[33].
Карьера в сборной
Эсекьель Гарай давно выступает за молодёжные сборные Аргентины. Он принимал участие в отборочных матчах и финальных турнирах двух молодёжных чемпионатов мира: до 17 лет в 2003 году и до 20 лет в 2005.
Первым полноценный матчем для Гарая за основную команду Аргентины стала товарищеская игра 22 августа 2008 года против сборной команды Норвегии, в которой Аргентина потерпела поражение со счётом 2:1. Ранее главный тренер Альфио Басиле уже вызывал его в сборную на серию товарищеских игр перед Кубком Америки в мае 2007, но травма не позволила ему выйти на поле в тех матчах.
Гарай принимал участие в пекинской Олимпиаде, сыграв в 5 из 6 матчах турнира, пропустив лишь игру против Сербии на групповой стадии. В матче за золото сборная Аргентины одолела команду Нигерии.