Remove the brisket from the refrigerator and allow it to sit at room temperature for 30 to 60 minutes. Trim off any large chunks of fat on the outside. Cut parallel lines partially through the fat cap about ¼ in apart, taking care not to slice all the way through to the meat. Repeat in the opposite direction, creating a crosshatch pattern.
Preheat the oven to 300ºF. Melt the butter in a large Dutch oven over medium heat. Add the onions, season with salt and cook, stirring occasionally, until the onions are very tender, golden and caramelized, 20 to 25 minutes. (Stir in a few tablespoons of water if the pot seems dry or the onions are cooking unevenly.) Add the garlic and thyme; cook, stirring, until fragrant, 1 to 2 minutes. Using tongs, transfer the onion mixture to a large bowl. Raise the heat to medium-high.
Season the brisket all over generously with salt and pepper. Add the brisket to the pot fat side down. Sear until browned on both sides, 3 to 4 minutes per side. Transfer the brisket to a large plate. Reduce the heat to low.
Stir in the broth, Worcestershire sauce and honey; add the bay leaves. Add the onions back to the pot, then the brisket (and any juices that have accumulated on the plate), fat side up. Cover and transfer to the oven. Braise the brisket until the meat is cooked through, about 2 hours. Carefully remove the brisket to a cutting board and let it rest for 5 minutes. (It may seem tough at this point; don’t worry.) Remove the bay leaves from the pot.
Thinly slice the meat against the grain. You can slice off any excess fat at this point, if you want to. Return the meat to the pot, tucking the slices into the braising liquid. Cover and continue to braise until the brisket is very tender, 45 to 60 minutes longer.
Taste and season with more salt and pepper, if needed. Serve the brisket with the onion mixture.