Silva, who was one of Milan’s biggest signings a year ago after a €38 million move from Porto, scored just two Serie A goals in his first season and started only seven league games.
He performed significantly better in the Europa League, however, scoring six goals in 10 appearances as Milan advanced to the round of 16.
The deal, still contingent upon Silva passing a medical, includes Sevilla paying €5m to take the forward on loan this season and between €30m-35m to keep him a year from now, according to multiple reports.
They had hoped to take Chelsea’s Michy Batshuayi on loan this season, but Batshuayi instead joined Valencia on Friday on a one-year loan.
Silva, 22, scored 20 goals in 41 appearances in all competitions for Porto in 2016-17, and he made three appearances, with one start, for Portugal at the World Cup this summer.