Put beans in a large pot and cover with 1 in. cold water. Bring to a boil; turn off heat and let beans sit, covered, 1 hour. Drain and return to pot. Add 2 cups chicken broth, 7 cups water, the onion, bacon, crushed garlic, sage sprigs, bay leaves, and 1/2 tsp. pepper. Simmer, uncovered, about 1 hour, or until beans are just tender.
Preheat oven to 375°. Add salt and cook beans until soft but not falling apart, 20 to 30 minutes.
Discard bacon, sage sprigs, and bay leaves. Drain beans into a colander set over a bowl; reserve liquid. Pour beans back into pot.
Blend 2 cups beans, 1/2 cup bean liquid, and 1/4 cup oil in a blender until smooth. Stir purée into beans along with chopped garlic and sage, rosemary, and remaining 1/2 tsp. pepper. Pour beans into a 3-qt. gratin dish and add enough bean liquid to just cover beans (if you have liquid left, save for soup; if you don't have enough, use more broth).
Bake until top is starting to set, 25 minutes. Mix zest, panko, and remaining 2 tbsp. oil in a bowl. Sprinkle over beans and bake until bubbly and browned and liquid has thickened, 30 minutes.
Note: Nutritional analysis is per serving.