Defending champions VfB Stuttgart advance to the German Cup final after a thrilling extra-time win against Freiburg, setting up a clash with Bayern Munich.