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. Combine them just before serving.