In a large skillet, over medium heat, heat the butter and 2 tablespoons of the oil.
Add the onion, sugar, and 1/2 teaspoon of the salt. Cook, stirring occasionally, for 25 minutes.
Add the vinegar. Cook, stirring, for 1 minute.
Add the remaining oil, 1/4 teaspoon of the salt, and the pepper.
Transfer half the mixture to a blender and puree, then return to skillet.Meanwhile, cook the green beans with the remaining 1/4 teaspoon of salt in boiling water until tender, about 4 minutes.
Transfer to a bowl of ice water.
Drain and pat dry.
Transfer to a serving bowl, toss with the onion mixture, and sprinkle with the zest.Make Ahead: Cook the green beans and make the vinaigrette early in the day; refrigerate them separately.