Novak Djokovic began the fightback and Janko Tipsarevic completed the job as Serbia overturned a 2-1 deficit against Canada in the Davis Cup semi-final in Belgrade.
In scenes reminiscent of their 2010 triumph in the same arena, world number one Djokovic beat big-serving Milos Raonic in three before Tipsarevic kept his nerve to beat Vasek Pospisil in three in the deciding singles.
Serbia's 3-2 win means they can now look forward to a home final against the Czech Republic but it was heartbreak for Canada who were looking to reach the final for the first time.
The Czech Republic beat Argentina 3-2.