A Hapoel Tel Aviv youth product, he was promoted into the first team in 2006 and won the Israel State Cup and the championship title after a dramatic match against the fierce rival Beitar Jerusalem in which Zahavi scored at the 92nd minute of extra time. Zahavi was reported to have garnered interest from clubs in Belgium during the 2009–10 season. Zahavi has a French passport which would mean that he would not count as a foreigner in many European leagues.
In the 2010–11 season Zahavi became the top assister of the Israeli Premier League, providing 13 assists during the season.
In December 2012, towards the winter transfers window opening, Zahavi showed signs of returning to Israel. Following an agreement made by Palermo and Maccabi Tel Aviv, his former club Hapoel Tel Aviv was given 7 days to make a bid on him due to a first-option clause in his contract, but it was not exploited. On 21 January 2013, after over a month of speculations in the media, Maccabi Tel Aviv announced his arrival, signing him on a three-and-a-half year contract for €250,000.
In a Tel Aviv derby on 3 November 2014, Zahavi scored a penalty to equalise the score at 1–1 in the first half, but was then attacked by a pitch invader. On retaliating, he was sent off, prompting more pitch invasions which led to the match being abandoned.