In a 201km ride from Camaiore to Follonica, Ackermann opened up the sprint early and outdid Fernando Gaviria (UAE Team Emirates), Rick Zabel (Israel Start-Up Nation) and Davide Ballerini (Deceuninck-Quick-Step) in a thrilling finale.
He now holds an eight-second advantage over Garivia in the GC after two stages and was delighted with his showing, especially in trying conditions.
Watch Pascal Ackermann triumph again on Tirreno-Adriatico Stage 2
"This was a different sprint, it was a long one for me because I was in the wind too early and then I went back and then I said, 'Okay, just go and try' and I think it was the perfect length to the finish line," he told Eurosport after the win.
"I'm looking forward to Saturday for sure. Maybe tomorrow I'll take a rest because it's a really hard stage. Also I have to recover as I was sick last week and I think I need a bit of rest. Then I'll come back on Saturday."
- Ackermann storms to victory on Stage 1 of Tirreno-Adriatico
- Froome was 'missing that top end' before Tour de France
Geraint Thomas and Chris Froome, both of Ineos, and Bahrain Merida's Mark Cavendish both failed to make the top 10.
Tirreno-Adriatico - Stage 2
1 Pascal Ackermann (Ger) Bora-Hansgrohe 5:01:53
2 Fernando Gaviria Rendon (Col) UAE Team Emirates
3 Rick Zabel (Ger) Israel Start-Up Nation
4 Davide Ballerini (Ita) Deceuninck-Quickstep
5 Tim Merlier (Bel) Alpecin-Fenix
6 Davide Cimolai (Ita) Israel Start-Up Nation
7 Lorrenzo Manzin (Fra) Total Direct Energie
8 Luca Pacioni (Ita) Androni Giocattoli-Sidermec
9 Florian Vermeersch (Bel) Lotto Soudal
10 Mike Teunissen (Ned) Team Jumbo-Visma