↑ Количество игр и голов за профессиональный клуб считается только для различных лиг национальных чемпионатов, обновлено по состоянию на 12 декабря 2023 года.
↑ Количество игр и голов за национальную сборную в официальных матчах, обновлено по состоянию на 14 ноября 2021 года.
Начал заниматься футболом в возрасте 5 лет в футбольной секции Василия Ивановича Бутакова[4]. Воспитанник СДЮШОР «Зенит» (тренер — Владимир Молчанов)[3]. С 2007 года — футболист дублирующего состава «Зенита», с 2008 года — основного состава. В Кубке УЕФА сезона 2007/08 забил два гола. Первый мяч — во втором отборочном раунде словацкому «ВиОну» на 93-й минуте (2:0). Второй гол был забит немецкому «Нюрнбергу» на 79-й минуте, в 5-м туре группового раунда (2:2). За дублирующий/молодёжный состав в 2007—2009 годах провёл 47 игр, забил 12 голов. На тренировочных сборах, проводимых летом 2010 года, наигрывался на позицию левого защитника, хотя начинал карьеру в основном составе на позиции правого флангового нападающего.[источник не указан 1991 день] В рамках группового этапа Лиги Европы сезона 2010/11 Ионов забил два гола — хорватскому «Хайдуку» (3:2) и бельгийскому «Андерлехту» (3:1). В Суперкубке России 2011 против ЦСКА (1:0) забил победный гол на 73-й минуте матча. Первый гол за «Зенит» в чемпионате России забил 17 апреля 2011 года на 20 минуте матча в ворота «Амкара». 14 июня в матче против «Ростова» забил на 12-й секунде матча самый быстрый гол в истории «Зенита»[5].
В январе 2012 года стали появляться слухи о возможном уходе Ионова. 10 января перешёл в краснодарскую «Кубань»[6]. Сперва он играл под 14-м номером, затем выбрал 10-й. 11 марта в гостевом матче против «Зенита» забил гол с пенальти и поклонился трибунам с болельщиками сине-бело-голубых[7]. Стал лидером команды[источник не указан 1688 дней] и помог ей по результатам сезона 2012/2013 впервые попасть в еврокубки.
3 июня 2013 года подписал четырёхлетний контракт с «Анжи»[8]. Проведя несколько матчей, был выставлен на трансфер в связи с тем, что «Анжи» объявил о смене вектора развития и решил избавиться от игроков с большой зарплатой.[источник не указан 1688 дней] 29 августа 2013 года перешёл в московское «Динамо»[9]. Как игрок позже признал, на его переход повлияло личное приглашение тренера Дана Петреску, с которым он ранее работал в «Кубани»[10]. Первый гол за клуб забил в 10-м туре в ворота «Рубина» (2:2)[11]. В сезоне 2014/15 провёл свой лучший сезон в карьере, забив 13 голов во всех турнирах. 31 августа 2017 года клуб расторг контракт по соглашению сторон[12]. За «Динамо» в различных турнирах сыграл 99 матчей, забил 22 мяча.
24 июня 2016 года было объявлено о переходе Ионова в ЦСКА на правах аренды сроком на один сезон с правом дальнейшего выкупа.[источник не указан 1688 дней] Ионов провёл 24 игры за команду и забил 3 гола, отдал 3 голевые передачи, но ЦСКА решил не выкупать футболиста. 31 августа 2017 года перешёл в «Ростов»[13].
15 октября 2020 года подписал контракт с ФК «Краснодар», рассчитанный до весны 2023 года[14]. 17 октября 2020 года в домашнем матче 11 тура против «Рубина» (3:1) дебютировал за клуб. 14 марта 2021 года в гостевом матче 22 тура против «Тамбова» (0:4) забил первый гол. 17 апреля 2021 года в домашнем матче 26 тура против Зенита (2:2) на 7 минуте забил гол с передачи Кристоффера Олссона, а на 60 минуте с передачи Юрия Газинского забил второй мяч в матче, оформив дубль, и был признан лучшим игроком матча[15][16][значимость факта?].
Вошёл в состав сборной России на чемпионат мира 2014 года в Бразилии. 10 сентября 2018 года оформил дубль в матче с Чехией. 11 июня 2019 года в четвёртом туре отборочного цикла чемпионата Европы 2020 года в матче против Кипра забил гол, ставший победным. 19 ноября 2019 года в заключительном десятом туре отборочного цикла чемпионата Европы 2020 года в матче против Сан-Марино забил свой четвёртый гол за сборную. В ходе отборочного цикла сыграл в 9 из 10 матчей сборной.
2 ноября 2011 года Ионов был задержан за вождение в нетрезвом виде[18] и оскорбление сотрудников полиции[19], в частности, по сведениям Геннадия Орлова, он сказал: «Да ты у меня через три дня, гаишник, будешь стирать носки мне»[20]. По словам пресс-секретаря ГУВД Петербурга, изначально Ионов находился на заднем сиденье своего автомобиля Infiniti. Во время проверки документов у девушки, сидевшей за рулём, Ионов перебрался на водительское сиденье и попытался уехать, однако был задержан. На него был наложен штраф в размере 2 тыс. рублей[21]. Клуб «Зенит» осудил поступок футболиста и перевёл его в режим постоянного проживания на территории базы команды[22].