Preheat your oven to 300°F (150°C). Pat the chuck roast dry with paper towels and season all over with 1 teaspoon of salt and ½ teaspoon of pepper.
Heat the olive oil in a large Dutch oven over medium-high heat. Carefully place the roast in the pot and sear for about 5 minutes per side, until a deep brown crust forms. Transfer the seared roast to a plate.
Reduce the heat to medium and melt the butter in the same pot. Add the sliced onions and cook, stirring occasionally, until they are soft and have a light caramel color, about 25-30 minutes. If the bottom of the pot gets too dark, add a small splash of beef broth to scrape up the browned bits.
Stir the minced garlic into the onions and cook for 1 minute until fragrant. Pour in the white wine to deglaze the pot, scraping up any remaining browned bits. Let the wine simmer and reduce by about half.
Sprinkle the flour over the onions and stir for 1 minute. Gradually pour in the beef broth and Worcestershire sauce. Add the bay leaves, thyme, rosemary, and the remaining salt and pepper. Bring the liquid to a simmer.
Return the seared roast to the pot. The liquid should come about three-quarters of the way up the sides of the beef. Add more broth if needed. Cover the pot with a tight-fitting lid.
Transfer the Dutch oven to the preheated oven and braise for 3.5 to 4 hours. The beef is done when it is very tender and shreds easily with a fork.
Carefully remove the pot from the oven. Increase the oven temperature to 400°F (200°C). Use two forks to shred the beef into large chunks inside the pot. Remove and discard the bay leaves and herb stems.
Sprinkle the shredded Gruyère cheese evenly over the beef and sauce. Return the pot to the oven, uncovered, and bake for 5-7 minutes, or until the cheese is melted and bubbly. Let it rest for a few minutes before serving.