Preheat your oven to 325°F (165°C). This moderate temperature will slowly cook the beef until tender while allowing the cranberry glaze to develop without burning.
Prepare the beef by patting it dry with paper towels. This ensures a better sear and helps the seasonings adhere properly. Tie with kitchen twine if necessary to maintain an even shape.
Season the roast generously with salt and pepper, rubbing it into all sides of the meat.
Heat olive oil in a large skillet or dutch oven over medium-high heat until shimmering. Sear the roast on all sides until deeply browned, about 3-4 minutes per side. Transfer to a plate if using a separate roasting pan.
Make the cranberry mixture by combining cranberries, granulated sugar, brown sugar, water or broth, orange zest and juice, garlic, Worcestershire sauce, thyme, and rosemary in a bowl. Stir until well combined.
Arrange onion rings in the bottom of your roasting pan or dutch oven, then place the seared beef on top.
Pour the cranberry mixture over the roast, ensuring some falls around the sides to create a cooking liquid at the bottom of the pan.
Cover the roasting pan tightly with foil (or lid if using a dutch oven) and place in the preheated oven.
Roast for 2 hours, then remove the foil and continue cooking for an additional 30-45 minutes until the internal temperature reaches 145°F for medium-rare or 160°F for medium.
Baste the roast with the pan juices every 15 minutes during the uncovered roasting time to develop a beautiful glaze.
Remove from the oven and let rest for 15-20 minutes, lightly covered with foil, before slicing. This allows the juices to redistribute throughout the meat.
Slice the roast against the grain into 1/2-inch thick slices and arrange on a serving platter.
Skim excess fat from the pan sauce and spoon the cranberry sauce over the sliced meat. Garnish with fresh rosemary sprigs if desired.