Given a (finite or infinite) subset X of the free monoid A⁎ over a finite alphabet A, the rank of X is the minimal cardinality of a set F such that X⊆F⁎. We say that a submonoid M generated by k elements of A⁎ is k-maximal if there does not exist another submonoid generated by at most k words containing M. We call a set X⊆A⁎primitive if it is the basis of a |X|-maximal submonoid. This definition encompasses the notion of primitive word — in fact, {w} is a primitive set if and only if w is a primitive word. By definition, for any set X, there exists a primitive set Y such that X⊆Y⁎. We therefore call Y a primitive root of X. As a main result, we prove that if a set has rank 2, then it has a unique primitive root. To obtain this result, we prove that the intersection of two 2-maximal submonoids is either the empty word or a submonoid generated by one single primitive word.For a single word w, we say that the set {x,y} is a bi-root of w if w can be written as a concatenation of copies of x and y and {x,y} is a primitive set. We prove that every primitive word w has at most one bi-root {x,y} such that |x|+|y|<|w|. That is, the bi-root of a word is unique provided the word is sufficiently long with respect to the size (sum of lengths) of the root.Our results are also compared to previous approaches that investigate pseudo-repetitions, where a morphic involutive function θ is defined on A⁎. In this setting, the notions of θ-power, θ-primitive and θ-root are defined, and it is shown that any word has a unique θ-primitive root. This result can be obtained with our approach by showing that a word w is θ-primitive if and only if {w,θ(w)} is a primitive set.