Hero Puyol ends German run in last four