Preheat oven to 400 degrees. Put duck legs skin side down in a skillet large enough to accommodate all ingredients comfortably. Turn heat to medium, and cook, rotating so skin browns thoroughly and evenly but do not turn over completely. Meanwhile, peel onion and carrots, trim celery and roughly chop them all.
When skins are nicely browned, turn and sear the meat side just 1 to 2 minutes, and season with salt and pepper. Remove to a plate; remove all fat from pan except enough to moisten vegetables. Add vegetables and salt and pepper, and cook, stirring occasionally, over medium-high heat, until they begin to brown, 10 to 15 minutes.
Return duck legs skin side up to pan, and add stock; it should come about halfway up the legs but not cover them. Turn heat to high, bring to boil and transfer to oven.
Cook 30 minutes, and turn heat to 350 degrees. Cook undisturbed until duck is tender and liquid reduced, at least 30 minutes or a bit longer. Serve immediately, or let rest in a 200-degree oven for up to an hour.