Promoting captains:

1. Have more territories than generals (roughly)

2. Have a captain-led army win a battle against a standing army (rebel or not... but not seige situations)

3. Have the battle odds be nearly even

4. I have found that auto-resolve works wonders, but I cannot say whether your odds of nabbing a general improve.