preparation

Preheat the oven to 400°F.

In a large sauté pan over moderate heat, warm the oil. Add the onions and sauté, stirring occasionally, until softened, about 5 minutes. Add the chopped garlic and sauté, stirring occasionally, for 1 minute. Add 3/4 cup wine and the bay leaves and bring to a simmer. Continue simmering until the onions are tender and the wine is slightly reduced, about 3 minutes. Whisk in the butter then remove the pan from the heat and whisk in the lemon juice.

Arrange the snappers, side by side, in a 12- by 18-inch or larger roasting pan. Stuff the cavity of each fish with about 1/4 cup of the onion mixture, along with the whole garlic, tomato slices, and celery. Season to taste with salt and pepper. Spoon the remaining onion mixture over the fish then pour half the lime juice on and around the fish and add 2 cups of water to the pan. Wrap the pan snugly with foil and roast for 25 minutes. Remove the foil and continue roasting until the fish is cooked through, 20 to 25 minutes longer. Remove any onion from the top of the fish then carefully transfer the fish to a large serving platter (do not discard the onion or juices remaining in the pan). Drizzle the remaining lime juice over the fish and cover loosely with foil to keep warm.

Scrape the onion and juices from the roasting pan into a medium saucepan. Add the remaining 1/4 cup white wine and 1/4 cup water, and bring to a simmer. Continue simmering until slightly reduced, then pour through a fine-mesh strainer.

To Serve:

Garnish the fish with cilantro and serve with the reduced pan sauce and lime wedges.

Cooks' note:
To grill the snapper, preheat the grill to medium-high (about 375°) and grill until just cooked through, about 40 minutes.