It looked like being business as usual when Andrea Poli gave the Rossoneri a 14th-minute lead following good work from Mario Balotelli.
But two Luca Toni headers, one either side of half-time, turned the game around and allowed Verona at least a couple of hours as league leaders.
Milan dominated the early stages, with captain Riccardo Montolivo shooting just over before Balotelli was picked out by Poli and drew a good save from goalkeeper Rafael.
The roles were reversed six minutes later when Balotelli found debutant Poli, who slipped between two defenders and beat Rafael from close range.
Balotelli sent a free-kick just wide but Verona came into the game as the first half progressed and Raphael Martinho's drive was saved by Christian Abbiati.
There was nothing the keeper could do in the 30th minute, though, as Romulo sent over a corner and Toni headed the equaliser.
Abbiati denied the Italy striker twice to ensure the game remained all square at the interval, and began the second period by superbly parrying Bosko Jankovic's point-blank header over the bar.
But he was beaten again in the 53rd minute when Jankovic scooped in a cross with the outside of his right foot and Toni sent a towering header into the top corner.
Martinho's drive was turned over the bar by Abbiati and Jankovic sent a 30-yard effort just over before Milan staged a late rally.
Substitute Robinho's cross flashed across the six-yard box untouched and Rafael saved Montolivo's 30-yard effort.
The keeper was on hand again to thwart Balotelli after Robinho's clever backheel and that was Milan's last opportunity, with Abbiati denying Daniele Cacia a breakaway third in the 89th minute.