There was very little to separate the two players during the opening two sets, with both claiming one set apiece on a tie-breaker.
Argentine Nalbandian won the first 7-0, before Haas responded with a 7-4 success to level up proceedings.
The deciding set was going with serve at 4-3 in Haas's favour. The German then claimed a decisive break and he followed that through by serving out for the match 6-7 7-6 6-3.
Haas, 34, will now face Juan Martin del Potro in the next round.