Rik Verbrugghe of Belgium retained the pink jersey of overall leader, finishing in the main group in this southern town following a 167-kilometer (103.5-mile) ride from Fossacesia to Lucera.
The Belgian leader, who captured the pink jersey in Saturday's prologue, led Dario Frigo by nine seconds in the standings.
Hondo, 27, of the Telekom team, completed the distance in three hours, 39 minutes, 35 seconds.
The German cyclist passed Perez in the last few meters and crossed the finish line with his arms raised as the Spaniard faded after leading through most of the final straight.
A sharp hilly section shortly before the finish prevented top sprinters such as Mario Cipollini and Jeroen Blijlevens to come into the limelight.
"I kept quiet (on the climb) because I knew that the last 200 meters (yards) were flat. I pushed hard in the final meters. It was a finish for a cyclist with strong legs,'' said Hondo, who was on the German team which won the world pursuit title in Sicily, in 1994.
Verbrugghe said it was a tough stage, well controlled by his Lotto team.
"I will do my best to retain the jersey in the next days,'' he said.
Francesco Casagrande, one of the Giro favorites, did not start in Monday's stage as a result of a fractured left arm suffered in one of the many spills, which marred the opening stage of the Italian race Sunday.
Some spills also occurred in Monday's leg. Australian Nathan O'Neill bruised his left thigh but managed to make it to the finish line.
Tuesday's third stage, a hilly 149 kilometers (92.3 miles) course, will take the cyclists to Potenza.
Stage 2: 163K from Fossacesia to Lucera:
1. Danilo Hondo (Ger) Telekom 3hr 39min 35sec
2. Rafael Mateos Perez (Spa)
3. Gabriele Missaglia (Ita)
4. Wladimir Belli (Ita)
5. Massimo Strazzer (Ita)
6. Gabriele Colombo (Ita)
7. Stefano Garzelli (Ita)
8. Massimiliano Gentili (Ita)
9. Fredy Gonzalez (Col)
10. Ivan Gotti (Ita)
11. Dario Frigo (Ita)
12. Andrej Hauptman (Slo)
13. Joaquim Lopez Torrella (Spa)
14. Laurent Dufaux (Swi)
15. Fortunato Baliani (Ita)
16. Mario Manzoni (Ita)
17. Andrea Noe (Ita)
18. Mario Cipollini (Ita)
19. Fabio Baldato (Ita)
20. Roberto Sgambelluri (Ita) all same time
General Classification after Stage 2:
1. Rik Verbrugghe (Bel) Lotto 9hr 02min 25sec
2. Dario Frigo (Ita) at 09sec
3. Jan Hruska (Cze) 13
4. Gabriele Colombo (Ita) 18
5. Abraham Olano (Spa) 19
6. Mariano Piccoli (Ita) 22
7. Wladimir Belli (Ita) 26
8. Jose Azevedo (Por) 28
9. Vladimir Duma (Ukr) 29
10. Ellis Rastelli (Ita) 30
11. Oscar Camenzind (Swi) 31
12. Gilberto Simoni (Ita) 33
13. Giuseppe Di Grande (Ita) 34
14. Jose Luis Arrieta (Spa) 39
15. Marco Pantani (Ita) 49
16. Andrea Noe (Ita) 51
17. Danilo Hondo (Ger) 53
18. Marco Velo (Ita) 55
19. Serguei Gontchar (Ukr) 56
20. Jon Odriozola (Spa) 56