This resolution notwithstanding, after 20 years of war the finances of the Republic were in a calamitous state and the treasury was empty. A popular movement was formed to counter this difficulty in a typically Roman manner: wealthy citizens, either alone or in groups, decided to show their patriotism and finance the construction of one ship apiece. The result was a fleet of approximately 200 quinqueremes, built, equipped and crewed without public expense.
The new fleet was completed in 242 BC and entrusted to the consul Gaius Lutatius Catulus, assisted by the praetor Quintus Valerius Falto. The reversals of fortune and difficulties suffered in past naval defeats served as invaluable acquired experience. The Roman ships were now more resistant to adverse weather conditions, with the corvus having been abandoned. Catulus and Falto also endeavoured to drill the crews in manoeuvres and exercises before leaving secure waters. The result was a fleet at the peak of condition and fighting ability.
In Carthage meanwhile, the news of enemy activity was not allowed to be left unanswered. A new Carthaginian fleet was also built, numbering about 250 warships (although probably undermanned), and launched in the Mediterranean under the command of Hanno (the general defeated at Agrigentum and Cape Ecnomus).
Catulus' first move was to besiege the Sicilian port city Lilybaeum (at the western tip of Sicily, nowadays called Marsala) once more, by blockading its harbour and the connection to Carthage. The intent was seemingly to cut Hamilcar Barca's supply and communication lines. For the rest of the year Catulus waited for the Carthaginian response. The senate granted him a proconsulship for 241 BC.
The Carthaginian fleet arrived to relieve the blockade the following year (241 BC). Hanno called a halt near the Aegates Islands to wait for a favourable breeze that would speed him to Lilybaeum. However, the Carthaginian fleet was spotted by Roman scouts and Catulus abandoned the blockade to meet his enemy.
On the morning of March 10, the wind favoured the Carthaginians and Hanno immediately set sail. Catulus measured the risk of attacking with the wind in his bow versus the risk of letting Hanno reach Sicily to relieve Hamilcar Barca and Lilybaeum. Despite unfavourable conditions, the consul decided to intercept the Carthaginians and ordered his fleet into battle formation. He had the Roman ships stripped of their masts, sails and other unnecessary equipment in order to make them more seaworthy in the rough conditions. Catulus himself was unable to join the actual battle due to injuries suffered in an earlier engagement, so in the actual battle the ships were commanded by his second in command, Quintus Valerius Falto.
In the ensuing battle the Romans enjoyed a far greater mobility, since their vessels were carrying only the bare necessities, while the Carthaginians were lumbered with men, equipment and provisions. Carthaginian crews were also hurriedly levied and inexperienced. The Roman fleet quickly gained the upper hand, using their greater manoeuvrability to ram the enemy vessels. About half of the Carthaginian fleet was either destroyed or captured. The rest were only saved by an abrupt change in the direction of the wind, allowing them to flee from the Romans who had left their masts and sails on shore.
Upon achieving decisive victory over the Carthaginian fleet, Catulus renewed the siege and captured Lilybaeum, isolating Barca and his army in Sicily, scattered among the few strongholds that Carthage still retained. Without the resources to build another fleet or to reinforce its land troops, Carthage admitted defeat and signed a peace treaty with Rome, bringing the First Punic War to a conclusion.