The easiest way to balance two-weapon fighting is to model it on shield use: in other words, give it an almost negligible effect. Still, it should call enough attention to itself that it doesn’t totally disappear on the character sheet.
Here’s an implementation I just thought of:
You can dual-wield if you have a light weapon in your off hand. You make one attack roll.
You get a +1 to attack.
On a hit, you hit with your main-hand weapon if you rolled an even number, and with your offhand weapon if you rolled an odd number.
Let’s leave two-weapon fighting out of the analysis for a minute. Shield vs. two-handed weapon is an interesting trade-off: for (in most editions) +1 AC, you lose 2+ points of damage (going from a d12 to a d8 weapon; possible decrease in strength bonus). It’s really hard to analyze this balance, which changes from edition to edition and from low to high level. But let’s say that this is reasonably balanced, with maybe a slight advantage for the two-handed weapon.
Now let’s throw accuracy into the mix. How does +1 to-hit compare to +1 AC? They’re pretty symmetrical, but I’d say to-hit is a little better. A fighter makes an attack roll nearly every turn, but doesn’t use AC every turn: some enemies use attacks that target other defenses/saving throws.
With my two-weapon implementation, a character trades the +1 AC of a shield for +1 to hit, and pays a small cost in damage to balance it out. With a 50% chance of using your offhand weapon, you’re likely to do 4 damage (average of shortsword and longsword) instead of a shield-user’s 4.5 damage (with a longsword). That cost goes up if you have, say, a +2 longsword in one hand and an ordinary shortsword in the other.
With these three attack styles, you now have a pretty straight tradeoff between the three pieces of D&D combat: damage bonus (2H), AC bonus (shield use), and attack bonus (2WF).
Another fun application of this two-weapon-fighting system: it buffs unarmed fighting. Nearly all boxers fight with both fists, so they get +1 to hit. Based on the die roll, they’ll throw a left hook or a right cross, which, in most cases, won’t matter since both do the same amount of damage.