It is certainly possible if that is your question, how to do it is more complex.
There is no single answer, and there can be no best case as you don't say how you will use the memory, as what is best case depends on how the memory will be used.
But you need a wear leveling algorithm of some sorts, or a file system of some sorts that can handle it, and can handle the physical storage with logical level.
A very crude approach is to just copy data temporarily to another sector, erase the original sector, and write back the data with the modified parts. You can use as small blocks to copy the data as necessary.
A slightly better way is to copy the old data sector to new data sector with the required modifications and have some kind of list to map logical sectors to physical sectors and update the list accordingly.
One approach might be to keep track of which pages are marked for erasing and erase a full sector when all or enough pages of a sector need erasing.
So it all depends how you need to read, modify and write data that is in the memory.
Many MCU or compiler manufacturers might already provide a flash file system for you to use so you don't have to re-invent the wheel.