Иван начинал заниматься футболом в местном клубе «Мёлин-Рибург». В 2002 году 14-летний Ракитич попал в футбольную школу «Базеля». Через три года его заявили за основную команду, и 29 августа 2005 года Иван дебютировал за свой клуб в матче Кубка УЕФА против боснийской команды «Широки Бриег» (1:0).
В сезоне 2006/07 хорват стал игроком основного состава и в 33 матчах забил 11 голов, став вторым бомбардиром команды после Младена Петрича. По итогам этого сезона он был назван лучшим молодым игроком чемпионата Швейцарии.
22 июня 2007 года Ракитич заключил 4-летний контракт с «Шальке 04». Сумма трансфера составила 5 миллионов евро. Главный тренер немецкого клуба Мирко Сломка взял хорватского полузащитника в качестве замены бразильцу Линкольну, перешедшему в «Галатасарай».
Дебют Ивана в Бундеслиге состоялся 10 августа в матче с чемпионом Германии «Штутгартом» (2:2), в котором он, выйдя на замену на 70-й минуте, забил гол уже спустя 5 минут. Второй свой гол Ракитич забил в ворота «Баварии» (1:1). В Лиге чемпионов УЕФА хорват помог своему клубу впервые в истории выйти в четвертьфинал турнира.
28 января 2011 года подписал контракт с «Севильей» до 30 июня 2015 года. Сумма трансфера составила примерно 1,5 млн долларов. Дебют состоялся 6 февраля 2011 года, в матче 22-го тура Ла Лиги против «Малаги», сыграл все 90 минут.
Несмотря на то, что Иван играл за юниорскую и молодёжную сборные Швейцарии, он принял решение откликнуться на приглашение главного тренера сборной Хорватии Славена Билича. Дебют Ракитича за национальную команду состоялся 8 сентября 2007 года в отборочном матче Евро-2008 против национальной команды Эстонии. Первый гол за сборную он забил во второй своей игре со сборной Андорры.
В Швейцарию его родители эмигрировали в 80-е годы из СР Хорватия.