Racing was sedate on a day that started with a minute's silence in honour of those caught up in the Brussels terror attacks.
After 173km of very little action, the peloton finally sprung to life with five kilometres to go, with Team Sky beginning the work for Ben Swift in the finale.
Chris Froome sat second wheel in the Sky train to ensure he kept out of trouble in the final kilometres.
Cofidis hit the front under the flamme rouge and never relinquished that position. Lead-out man Geoffrey Soupe led Bouhanni out into the final 400m and a late surge from Meersman couldn't overcome the Frenchman.
Sky's lead-out in the end did not work for Swift, with the Brit finishing outside the top 10 on a stage ideally suited to him.
Volta a Catalunya stage two, Mataro - Olot (178.7km)
1. Nacer Bouhanni (Fra) Cofidis, 4-39-10
2. Gianni Meersman (Bel) Etixx-Quick Step, st
3. Philippe Gilbert (Bel) BMC, st
4. Aleksei Tcatevich (Rus) Katusha, st
5. Carlos Barbero (Esp) Caja Rural, st
6. Kiel Reijnen (USA) Trek-Segafredo, st
7. Enrico Gasparotto (Ita) Wanty Groupe-Gobert, st
8. Jonas Vangenechten (Bel) IAM Cycling, st
9. Pawel Franczak (Pol) Verva Activejet, st
10. Kevin Reza (Fra) FDJ, st
Overall standings after stage two
1. Nacer Bouhanni (Fra) Cofidis, 9-07-41
2. Ben Swift (GBr) Team Sky, at 14s
3. Thomas de Gendt (Bel) Lotto-Soudal, st
4. Daryl Impey (RSA) Orica-GreenEdge, at 16s
5. Philippe Gilbert (Bel) BMC, st
6. Maxime Bouet (Bel) Etixx-Quick Step, st
7. Louis Vervaeke (Bel) Lotto-Soudal, at 17s
8. Javier Moreno (Esp) Movistar, at 18s
9. Ruben Fernandez (Esp) Movistar, at 19s
10. Aleksei Tcatevich (Rus) Katusha, at 20s
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1