First of all, have you checked with the vet? Is he overweight (like people, weight only tells you so much - size and body type are important, too)? Does the vet think the food you are giving him is appropriate for him?
Second of all, can you stop free-feeding? This can be a pain at first, but once a routine is established, it's ok (I had to do it, so I'm know it's not fun to have to start).
Third, if you only have 1 cat and 1 puppy, can you seperate them at feeding time?
Alternatively, maybe have an indoor 'dog house' with a collar actived key (you can get them for cat doors), with the key in your puppy's collar and the puppy food only available in there. That way the puppy can feed as he likes and you can feed your cat at set times of the day. This option would probably require a bit of money (though probably less than you think) and some elbow grease, but might be the best solution all around - puppy eats puppy food, kitty doesn't, you don't have to corral them both at food time, etc.
ETA: Alternatively is an alternative to option three, not to going to the vet - if you haven't done that, that should be your first port of call.