Assuming you bought a piece of beef suitable for roasting, I’d say your temperature was way too low. It also helps if there’s a layer of fat to baste the meat.
220/240 for the first 20 minutes, then down to 190 for the remainder of the time.
No foil - the outside will brown better, but cover if you think it’s browning too much.
Rest for 15-20 minutes.
I’ve always heard it cooks better, the bigger the joint is - so perhaps buy a big piece to freeze any leftovers (sliced in gravy) or served in sandwiches or made into another dish.
Hopefully, better cooks will offer some thoughts too.