Thoughts on Battles
Oftentimes, a large battle serves as a fantasy novel's climax, with the good side often being outnumbered, tired, and overpowered, and yet they still win. Nothing wrong with that, except for the fact that these battles always seem to take place on large, flat, open plains (unless they're sieges, which I'll elaborate upon later). Not only is the smaller army in such a battle almost guaranteed to be slaughtered, there is potential for so much more. Smaller, weaker armies triumphing over, driving off, or at least holding their own against larger, stronger armies is not unheard of. It's happened a lot throughout history. However, none of them ever happened on a wide open field. There are a number of different ways that they did occur, and things you could do to help the little army win the day.
You could use an ambush, having one army lie in wait in tall grass, thick forest, dug holes, or even the cover of darkness and spring out when the time is right to catch the enemy off guard. You don't have to be a bandit to do that. The Germanic tribes used this tactic against the Romans during the Battle of Teutoburg Forest.
You could have one army stake a claim to an excellent defensive position. If the enemy has to move through a canyon or thin mountain pass, that would be a wonderful place to meet them. They could station archers and artillery on the rim, and keep the enemy at a standstill with fortifications and their own bodies while they obliterate them. The 300 Spartans (and several thousand other Greeks) did just that (well, minus the obliteration) during the battle of Thermopylae.
You could have one army set booby traps along a path. Pitfall traps, tripwires that pull down boulders, or some kind of magical land mines would all be valid tactics that would eat up enemy men and (perhaps more importantly) morale.
You could have one army feign a retreat, drawing the other out of a strategic positions, at which point they turn around start killing. A maneuver like the Parthian Shot could also be attempted, which involves fleeing mounted archers turning around in the saddle as the horse goes forward and shooting arrows at their pursuers. However, such a maneuver requires extremely talented soldiers.
You could have one army use deception. One army could hire a band of mercenaries to pretend to offer their services to the opposing army and then turn traitor at a critical moment to sow destruction and confusion.
You could have one army take advantage of weather conditions. Heavy rains could turn a low-lying area into a muddy swamp, wreaking havoc on enemy charges, especially cavalry charges.
You could use any combination of the above ideas. Here's an example.
It's late fall. The two armies are stationed on opposite sides of a slow-moving but deep river. The nights have been well below freezing and there is ice on the river, but neither army is totally comfortable with crossing yet. One army lets the rumor be spread around the enemy camp that an elite squad of reinforcements is on its way to swell their ranks, even though this is a total lie. The enemy falls for it and attempts an assault, cracking the ice and sending the armed and armored soldiers down into the drink.
The other common type of battle is a siege, with one side trying to knock down the walls and fortifications surrounding a city and capture/destroy it. Typically the protagonist's side is the defending side, but not always. The attacking side will have two main advantages; mobility and time. The defenders will be stuck in one place and have to rely on whatever food and supplies they have. If the city is a rich one and everyone is fat and pampered, this could turn ugly fast. The attackers can have food brought in, and in theory stay there indefinitely. However, this can be expensive, and the defenders may be able to send messages out and have allies attack the supply trains. Plus, starving them out won't work if the defenders have teleportation magic. When speed is necessary, the attackers may attempt an assault. If they don't care about the city's infrastructure or population, then they can just try to barge right in. If they want to keep it intact, a small, elite group should be sent on a stealh mission.
Also, bring magic into the fray. It may not always be possible, like if magic in your world is extremely rare/difficult/dangerous to use or not suited for battle, or if mages spend all their time fighting their opposites in the enemy army and can't devote much thought to regular soldiers, or if magic simply doesn't exist in your world. But if you've got magical muscle to spare, use it! Magic and its users could be used for so many things, offensive and defensive. Just be creative. Here are a few ideas.
1. A platoon of mages using magic to augment or complement fighting skill. Using lightning spells to electrify their metal weapons could bring a whole new meaning to the phrase "shock troops".
2. Mages could cast spells to increase regular soldiers' fighting abilities, such as increasing pain tolerance (although removing pain altogether can cause problems), increasing strength or reflexes, or even calming their "OMG AAH #%&@ OH GOD AAH &#!@ GOD" state of mind.
3. Telepathy could be used to easily relay orders.
4. Fast-acting magic could fix a wall even as the enemy tries to tear it down.
5. In a siege situation, a wall could be made with a network of metal ribs running down the sides. Combine that with wet ground, metal-wearing soldiers, and some guys with lightning spells, and you've got a recipe for toasted besieger.
In short, just be creative with battles. They've got a lot of potential. Use it. And don't make it seem fun. Because it's not.