1. Place smashed garlic in a resealable plastic bag along with lamb shanks and ¼ cup fish sauce. Seal bag, pressing out air. Turn lamb shanks to coat and chill at least 4 hours and up to 1 day.
2. Let lamb sit at room temperature 1 hour.
3. Preheat oven to 300°. Heat oil in a large Dutch oven or other heavy pot over medium-high. Remove lamb shanks from bag and add to pot; discard marinade. Cook shanks, turning occasionally, until browned evenly on all sides, 14–18 minutes. Transfer to a large plate.
4. Reduce heat to medium and cook shallots, cilantro stems, and finely chopped garlic in the same pot, stirring often and scraping up browned bits from the bottom, until shallots are golden, 5–7 minutes. Add chiles, kaffir lime leaves, bay leaves, stock, and ¼ cup fish sauce, and stir, scraping up any remaining stuck-on bits from bottom of pot. Bring to a simmer, return lamb to pot, and cover. Transfer to oven and braise until meat is pulling away from bones but not quite fork-tender, 50–60 minutes.
5. Turn shanks and add fennel and carrots to pot, submerging in liquid. Cover and braise until meat is very tender and nearly falling off the bone, 40–50 minutes. Let rest 15–20 minutes before serving.
6. Serve lamb shanks with fennel and carrots and some braising liquid (for a thicker sauce, simmer the braising liquid until it reduces slightly), topped with cilantro, basil, and/or celery leaves, and seasoned with a few more drops of fish sauce if desired.
As seen on Bon Appétit