The Weighted Safe Set Problem requires to partition an undirected graph into two families of connected components, respectively denoted as safe and unsafe, in such a way that each safe component dominates the unsafe adjacent components with respect to a weight function. We introduce a combinatorial branch and bound approach, whose main strength is a refined relaxation that combines graph manipulations and the solution of an auxiliary problem. We also propose fixing procedures to reduce the number of branching nodes. The algorithm solves all weighted instances available in the literature and most unweighted ones, up to 50 vertices, with computational times orders of magnitude smaller than the competing algorithms. In order to investigate the limits of the approach, we introduce a benchmark of graphs with 60 vertices, solving to optimality the denser instances.