My local shelter gave me this method that worked wonders, and I have used it ever since.
Keep new cat in a totally separate room from the old cat. Take a tshirt that you’ve worn for a few hours and rub it all over the new cat, and put that shirt under the old cat’s food dish. Take another tshirt you’ve worn for a few hours and rub it all over the old cat, and put that shirt under the new cat’s food dish. This way, the cats associate you and food with the other cat’s scent. Every day, pick up the shirt, rub it around in your hands for a bit, rub it on the other cat, and put it back under the dish. Each day move the food dishes closer and closer to the door of the room the new cat is in.
When they are eating on the other side of the door from each other without any aggression, have one person hold the new cat, one person hold the old cat (use a towel around them if you think they’ll freak out, don’t want any injuries here) and open the door so they can see each other. Do this for longer and longer periods, but don’t let them near each other yet. Keep it up with the shirts.
When they can stand the sight of each other without freaking out, you can bring them into contact. Have one person hold each cat and bring them a bit closer to each other. Stop the approach at the point where they start to get aggressive. Each day you should be able to get a bit closer. Once they come into contact and are sniffing each other, they should be ok mixed together. Put them both down in the new cat’s room, keep the door shut, and keep an eye on them. Let them get used to moving around each other. If there is a bad reaction, you may have to go back a step or two until they are used to each other.
This whole process usually takes a few weeks. It’s a bit involved, but it works. You wind up with two cats (or more) who are friendly to each other, not just bitter rivals who put up with each other. Good luck!