After Alberto Aquilani gave Milan the lead in the 11th minute, Cavani struck back for Napoli in the 13th, 36th and 51st at the San Paolo stadium.
Cavani also scored in a 1-1 draw at big-spending Manchester City on Wednesday in the Champions League, and Napoli opened Serie A with a 3-1 win over Cesena last weekend.
The string of positive results is sure to make Napoli’s devoted fans start dreaming of its first title since Diego Maradona led the southern club to Serie A championships in 1987 and 1990.
Napoli, Juventus, Udinese and Cagliari each have six points through two rounds, but Napoli leads on goals scored.
Earlier, Juventus won 1-0 at Siena and Udinese beat Fiorentina 2-0, while Cagliari beat newly promoted Novara 2-1 Saturday.
Also Saturday, struggling Inter Milan and Roma drew 0-0.
In Naples, Milan was missing several key players due to injury, such as striker Zlatan Ibrahimovic, captain Massimo Ambrosini and fellow midfielder Kevin-Prince Boateng.
Still, Milan appeared in control at the start, as Aquilani met a cross from Antonio Cassano with a long, difficult header to put the visitors ahead.
But Cavani quickly equalized with an angled shot from the edge of the box to finish off a brilliant set piece for Napoli.
Cavani’s second goal was even more spectacular, as he used one powerful touch of his right foot to finish off a counterattack after taking the ball from fellow Uruguayan Walter Gargano, who evaded Milan’s entire midfield by dribbling from one end to the other.
Nicknamed “El Matador,” Cavani then used his left foot to convert a rebound for his third goal, as Milan’s classy center backs Alessandro Nesta and Thiago Silva appeared befuddled.
In the 62nd, Nesta lost his cool after getting tackled from behind by Salvatore Aronica, responding by grabbing the Napoli defender by the neck, drawing yellow cards for both players.
In Siena, Alessandro Matri scored in the 54th by finishing off a swift counterattack for Juventus, which was completely remodeled after finishing seventh last season and missing out on Europe.
New Juventus coach Antonio Conte led Siena back into the top division last season, and Juve took advantage of one of its few scoring chances against his former club.
All four Juve forwards were involved in the goal. Simone Pepe launched a long forward pass to Emanuele Giaccherini, who gave the ball to Mirko Vucinic, who in turn found Matri unmarked inside the area.
“It certainly wasn’t an easy match for us,” Conte said. “Siena was well placed on the pitch and we did well to control the match.”
Udinese got goals from Antonio Di Natale and Mauricio Isla, while Fiorentina lost forward Alberto Gilardino to what appeared to be a serious knee injury.
Genoa and Catania also won and are next in the table with four points each.
Rodrigo Palacio scored once and set up another goal from Juraj Kucka as Genoa rallied to beat Lazio 2-1 with two second-half goals. Giuseppe Sculli had given Lazio the lead after redirecting a cross from Miroslav Klose in the 11th.
In Sicily, Catania beat Cesena 1-0 with a penalty from Maxi Lopez just before halftime.
Also, Sebastian Giovinco scored an injury-time winner to give Parma a 2-1 victory over Chievo Verona. Giovinco had given Parma the lead in the 24th and former Parma forward Alberto Paloschi equalized for Chievo Verona in the 79th.
Giovinco also scored Parma’s only goal in a 4-1 loss to Juventus last weekend and the 1.64-meter (5-foot-5) forward is tied with Cavani atop the league scoring chart with three goals. However, Giovinco will miss Parma’s next match at Fiorentina after picking up a second yellow card in the waning seconds.
Lecce won 2-0 at Bologna with goals from a pair of Uruguayan midfielders, Guillermo Giacomazzi and Carlos Grossmuller.
Finding motivation from its six-point match-fixing penalty, Atalanta remained unbeaten with a 1-0 win over Palermo in a game that was suspended for more than 30 minutes in the second half due to a torrential rainstorm. Atalanta forward German Denis scored with an angled shot inside the near post in the 34th minute.
Atalanta, which was penalized six points for its role in a betting and match-fixing scandal, has minus two points after drawing 2-2 at Genoa in its opener last week.