Representing Serbia at the European SC Championships in Dublin, 2003, the sprinter won the gold medal in 100 m butterfly and set a new world record. He also won a silver medal in 50 m Freestyle. On December 6, 2006, Čavić defended his European championship in the 100 m butterfly in Helsinki, finishing at 50.63 seconds. On December 14, 2007, Čavić defended his European championship again in the 100 m butterfly in Debrecen, finishing at 50.53 seconds.
In 2008, Čavić won the European championship in the 50 m butterfly, setting the new European record (23.11) in Eindhoven, Holland - a result briefly quashed when the European Swimming Federation (LEN) immediately disqualified the swimmer for wearing a T-shirt at the medals ceremony that read “Kosovo is Serbia.” Shortly afterwards, however, the disqualification was lifted and recognition of his record reinstated.
Even though he qualified for the 100 metre freestyle semi-final Čavić withdrew in order to prepare for the 100 metre butterfly.
On August 14 2008 at the Beijing Olympics, Čavić broke the 100 meter butterfly Olympic Record during the preliminary heats, finishing ahead of Michael Phelps and also recorded the fastest time in the semi-finals. Čavić came in second to Phelps by 1/100 of a second in the final, which was also the first medal for Serbia. It was Phelps' seventh gold medal of the Games. The Serbian team initially challenged the result but FINA later confirmed the finish. Čavić later wrote in his blog: "People, this is the greatest moment of my life. If you ask me, it should be accepted and we should move on. I’ve accepted defeat, and there’s nothing wrong with losing to the greatest swimmer there has ever been".
Čavić is a member and declared fan of Partizan Belgrade.