Free weights require the use of more muscles, so it's a better workout, you're training more muscles at once, it gives you a more symmetric body (not along the middle axis, but the relative size of your muscles), more release of the hormones that makes your muscles grow, etc.
You lift weights to promote muscle growth, and it's also helpful in maintaining muscle mass while losing weight, without weight training the body will burn more muscle along with the fat.
You don't stress the muscles much by doing cardio, but by lifting weights you rupture parts of the muscle, these parts contain hormones that stimulate muscle growth. However, they won't grow unless your body has the extra calories to spare - if it's just getting enough nutrients to keep things running, it won't invest in big muscles that will require more food. A lot of your body functions are designed to increase chances of surviving periods of starvation, so that's why you need to eat above maintenance level to get the full potential muscle growth.