Pat the beef roast completely dry with paper towels. In a small bowl, combine 2 tbsp olive oil, the chopped rosemary, minced garlic, salt, pepper, and smoked paprika to form a paste. Rub this mixture all over the entire surface of the roast. Let it sit at room temperature for 30 minutes.
Preheat oven to 375°F (190°C). Heat a large cast-iron skillet or oven-safe pan over medium-high heat with the remaining 1 tbsp of olive oil. Once hot, sear the roast on all sides until deeply browned, about 3-4 minutes per side. Transfer the roast to a plate.
In the same skillet, add the mushrooms, sliced onion, smashed garlic cloves, and rosemary sprigs. Toss to coat in the pan drippings. Create a space in the center and place the seared roast back in the skillet, nestling it among the vegetables. Transfer the skillet to the preheated oven.
Roast for 45-60 minutes, or until an instant-read thermometer inserted into the thickest part reads 125°F (52°C) for medium-rare or 135°F (57°C) for medium. The mushrooms and onions should be tender and browned. Remove the skillet from the oven, transfer the roast to a cutting board, and tent loosely with foil. Let it rest for 15 minutes.
While the beef rests, make the sauce. Place the skillet with the mushrooms and onions back on the stove over medium heat. Sprinkle the flour over the vegetables and cook for 1 minute. Pour in the red wine (if using) to deglaze, scraping up any browned bits. Add the beef broth and bring to a simmer, cooking until slightly thickened, about 3-5 minutes. Remove from heat and swirl in the cold butter until melted and glossy. Season with salt and pepper to taste.
Slice the rested roast beef against the grain into 1/2-inch thick slices. Arrange the slices back in the skillet over the mushrooms and sauce, or on a serving platter. Spoon some of the sauce and mushrooms over the top. Garnish with additional fresh rosemary sprigs.