Remove roast from fridge 1 hour before cooking to allow it to come to room temperature.
Preheat oven to 160 C / Gas 3.
Rub salt and black pepper over the surface of the roast. Heat 2 tablespoons oil in a casserole pot over medium heat. Add onions and fennel; cook and stir for 5 minutes. Add garlic; cook 1 minute more. Remove onion mixture from casserole pot.
Pour remaining 2 tablespoons oil into the casserole pot over medium heat. Add beef roast; brown on all sides, about 10 minutes. Remove roast and return onion mixture to casserole pot. Place roast on top and cover with a lid.
Braise in the preheated oven until fork tender, 2 to 3 hours.
Remove roast from casserole pot. Puree half the onion-fennel mixture in a food processor.
Melt butter in a pan over medium heat; add flour and black pepper. Cook and stir until browned, 2 to 3 minutes. Whisk half of the beef stock and the onion-fennel puree into flour; add remaining stock. Simmer until thickened, 3 to 5 minutes. Finely chop reserved fennel fronds and add to gravy; season to taste with additional salt and pepper.
Place roast on a platter; top with remaining onion-fennel mixture and half the gravy. Serve with remaining gravy on the side.