The issue is that the provided pattern also matches the outer list. Therefore ReplaceAll[] replaces the outer list and stops (as theirthere are no elements left).
To overcome this issue, Map[] must be used:
ReplaceAll[{x_, _} :> {x, "SOMETHING"}] /@ {{1, "2"}, {2, "3"}}