Centre back Silva opened the scoring midway through the first half when he ghosted behind his marker to head home Andrea Pirlo's free-kick from close range.
Pato doubled Milan's lead 10 minutes before the break when he out-jumped Aleksandar Kolarov to head Ronaldinho's cross past Uruguayan keeper Fernando Muslera.
Silva was again on the scoresheet but this time he benefited the opposition, diverting a deflected shot from Mauro Zarate into his own net four minutes past the hour mark.
Milan, who extended their unbeaten run to seven games after recovering from a disappointing start to their season, moved up to third with 22 points.
They are two points behind second-placed Juventus, who crushed Atalanta 5-2 on Saturday, and six adrift of title holders Inter Milan, who can stretch their lead if they beat Roma later on Sunday.
Watch Milan's goals
Watch Lazio goal