Theory predicts that parallel evolution should be common when the number of beneficial mutations is limited by selective constraints on protein structure. However, confirmation is scarce in natural populations. Here we studied the major haemoglobin genes of eight Andean duck lineages and compared them to 115 other waterfowl species, including the bar-headed goose (Anser indicus) and Abyssinian blue-winged goose (Cyanochen cyanopterus), two additional species living at high altitude. One to five amino acid replacements were significantly overrepresented or derived in each highland population, and parallel substitutions were more common than in simulated sequences evolved under a neutral model. Two substitutions evolved in parallel in the αA subunit of two (Ala-α8) and five (Thr-α77) taxa, and five identical βA subunit substitutions were observed in two (Ser-β4, Glu-β94, Met-β133) or three (Ser-β13, Ser-β116) taxa. Substitutions at adjacent sites within the same functional protein region were also observed. Five such replacements were in exterior, solvent-accessible positions on the A helix and AB corner of the αA subunit. Five others were in close proximity to inositolpentaphosphate binding sites, and two pairs of independent replacements occurred at two different α1β1 intersubunit contacts. More than half of the substitutions in highland lineages resulted in the acquisition of serine or threonine (18 gains vs. 2 losses), both of which possess a hydroxyl group that can hydrogen bond to a variety of polar substrates. The patterns of parallel evolution observed in these waterfowl suggest that adaptation to high-altitude hypoxia has resulted from selection on unique but overlapping sets of one to five amino acid substitutions in each lineage.