The `-i`/`--in-place` flag edits a file in place. By default, `sed` reads the given file, processes it outputting into a temporary file, then copies the temporary file over the original, without checking whether the original was a symlink.
GNU `sed` has a `--follow-symlinks` flag, which makes it behave as you want:
$ echo "cat" > pet
$ ln --symbolic pet pet_link
$ sed --in-place --follow-symlinks 's/cat/dog/' pet_link
$ cat pet
dog