The Italian ousprinted the likes of JJ Lobato (Movistar) and Simon Gerrans (Orica-GreenEdge) on the uphill drag to the finish line, after a long and slow day that saw the peloton average just 35kmph on a predominantly flat stage.
It's 25-year-old Ulissi's fourth Giro stage win in his career, having taken two in last year's edition before failing an anti-doping test for salbutamol and subsequently serving a nine-month ban.
The long stage, which saw injured race leader Alberto Contador (Tinkoff-Saxo) survive safely, inevitably looked to end in a sprint, but a fierce pace from Tinkoff up the near 5km final climb, saw many of the pure sprinters drop out the back, leaving the opportunity for the puncheurs.
The day's key break, which contained Marco Bandiera (Androni-Sidermec), Nicola Boem (Bardiani-CSF), Nikolay Mihaylov (CCC) and Pierpaolo De Negri (Nippo-Vini Fantini), extended over 11 minutes before the gap began to fall on a generally uneventful stage.
Having been out front from just past the 20km mark, the slow pace of the peloton saw the race drop 30 minutes behind the race organiser's slowest schedule, and the four men dangled out front until the pace was kicked-up to drag them in with 20km remaining.
There was no change to the top of the GC, with all the contenders finishing safely just outside winner Ulissi's time.
Saturday's stage eight sees the peloton navigate a 188km route through the high-mountains, with a category one summit finish at Campitello Matese surely the stage for more action between the overall favourites.
Giro d’Italia 2015, stage seven: Grosseto – Fiuggi 263km
1. Diego Ulissi (Ita) Lampre-Merida, in 7-22-21
2. Juan José Lobato (Esp) Movistar
3. Simon Gerrans (Aus) Orica-GreenEdge
4. Manuel Belletti (Ita) Southeast
5. Enrico Battaglin (Ita) Bardiani-CSF
6. Sonny Colbrelli (Ita) Bardiani-CSF
7. Fabio Felline (Ita) Trek Factory Racing
8. Grega Bole (Slo) CCC Sprandi
9. Kéva Réza (Fra) FDJ
10. Sergey Lagutin (Rus) Katusha, all same time
17. Fabio Aru (Ita) Astana, at 3 seconds
29. Richie Porte (Aus) Team Sky, st
30. Alberto Contador (Esp) Tinkoff-Saxo, st
Overall classification after stage seven
1. Alberto Contador (Esp) Tinkoff-Saxo, in 27-48-00
2. Fabio Aru (Ita) Astana, at 2 seconds
3. Richie Porte (Aus) Team Sky, at 20 seconds
4. Roman Kreuziger (Cze) Tinkoff-Saxo, at 22 seconds
5. Dario Cataldo (Ita) Astana, at 28 seconds
6. Esteban Chaves (Col) Orica-GreenEdge, at 37 seconds
7. Giovanni Visconti (Ita) Movistar, at 56 seconds
8. Mikel Landa (Esp) Astana, at 1-01
9. Davide Formolo (Ita) Cannondale-Garmin, at 1-15
10. Andrey Amador (Crc) Movistar, at 1-18
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