As a DM, I give out pets, which the players can choose to accept. It is a little companion, which levels up with the players. The DM controls it in roleplay, and they control it in combat. Because I control it in roleplay, I make sure it becomes everybody's friend. It becomes a member of the party, not a buff for one player. And the players rotate who controls the critter.
All it takes is to tell the group that after combat, as initiative stops and they loot the room they find a baby monkey. Guaranteed that at least one or two of the party will want to keep it. They currently have a little L3 monkey with about 18 HP, AC 11, two unarmed strikes at +2 on attack, and 1d4+1 damage, and a +5 on acrobatics and a climbing speed of 30 ft. It understands common, but does not speak it.
As a DM, I can override any decision of the players regarding the monkey (says so on the stat-sheet of the monkey). They must roleplay their pet, which has a rather low intelligence. If they start playing too strategically (i.e. flanking maneuvers, or otherwise smart moves) then I sometimes override. However, if the players deliberately train the animal, which they started doing, then I will start allowing strategic moves later.
I heard them talking about getting some armor for the monkey, so it is going well.
I would never consider giving out regular monsters from the monster manual. These do not level up, so they are overpowered initially while the players are low level, and become irrelevant later as the players level up. Or even worse: they become a problem because they die too soon, so as a DM you can no longer use powerful AoE spells out of fear of killing the beloved pet outright... Ugh.