As Hannibal passed Lake Trasimene, he came to a place very suitable for an ambush, and hearing that Flaminius had broken camp and was pursuing him, made preparations for the impending battle. To the north was a series of heavily forested hills where the Malpasso Road passed along the north side of Lake Trasimene. Along the hill-bordered skirts of the lake, Hannibal camped where he was in full view of anyone entering the northern defile, and spent the night arranging his troops for battle. Below the camp, he placed his heavy infantry (Iberians, Celts, and Africans) upon a slight elevation. Here, they had ample ground from which they could charge down upon the head of the Roman column on the left flank, when it should reach the position. His cavalry and Gallic infantry were concealed in the hills in the depth of the wooded valley from which the Romans would first enter, so that they could quickly sally out and close the entrance, blocking the retreat route of the Romans. Then he posted his light troops at intervals along the height overlooking the plain, with orders to keep well hidden in the woods until signalled to attack. In addition, the night before the battle commenced, Hannibal ordered his men to light campfires on the hills of Tuoro, at a considerable distance, so as to convince the Romans that his forces were further away than they actually were.
The next morning, the Roman troops marched eastward along the road running near the northern edge of the lake. Eager for battle, Flaminius pushed his men hard and hurried up the column in the rear. Hannibal then sent a small skirmish force to draw the vanguard away from the front of the line, in order to split the Roman forces. Once all the Romans had at last marched through the foggy, narrow defile and entered the plains skirting the lake, trumpets were blown, signalling the general attack.
The Carthaginian cavalry and infantry swept down from their concealed positions in the surrounding hills, blocked the road and engaged the unsuspecting Romans from three sides. Surprised and outmanoeuvred, the Romans did not have time to draw up in battle array, and were forced to fight a desperate hand-to-hand battle in open order. The Romans were quickly split into three parts. The westernmost was attacked by the Carthaginian cavalry and forced into the lake, leaving the other two groups with no way to retreat. The centre, including Flaminius, stood its ground, but was cut down by Hannibal's Gauls after three hours of heavy combat.
In less than four hours, the Roman army was annihilated. The vanguard saw little combat and, once the disaster to their rear became obvious, hacked their way through the skirmishers and out of the forest. Of the initial Roman force of about 30,000, about 15,000 were either killed in battle or drowned while trying to escape into the lake (including Flaminius himself who was slain by the Gaul, Ducarius). Another 10,000 are reported to have made their way back to Rome by various means, and the rest were captured.. Hannibal's losses were 2,500, plus "many" who died of their wounds. About 6,000 Romans escaped, under the cover of fog, only to be captured by Maharbal the following day. Both Livy and Polybius wrote that Maharbal promised safe passage ("with a garment apiece") if they surrendered their weapons and armour, but Hannibal had them sold into slavery irrespective of the promise made.
The disaster for Rome did not end there. Within a day or two, a reinforcement force of 4,000 under the propraetor Gaius Centennius was intercepted and destroyed.
Text from Wikipedia.