Monaco beat third-placed Rennes in France.
Inter’s 3-1 win at Spezia earlier in the day, which lifted them a point clear at the summit, had turned up the heat on Stefano Pioli’s men.
However, a cool Rafael Leao volley from a superb Pierre Kalulu cross in the 11th minute gave Milan the lead against Genoa at San Siro, before Junior Messias netted from close range – after his initial effort was parried – to wrap up the three points for the hosts, who had struggled to put the match to bed.
Inter, who face Milan in the second leg of their Coppa Italia semi-final next Tuesday, still have a game in hand over the league leaders and are now on a three-match winning run following their success at Spezia.
Marcelo Brozovic rifled home a half-volley to give Inter a 1-0 half-time lead, before Lautaro Martinez stuck out a leg to double the advantage in the 73rd minute.
Alexis Sanchez rounded off the scoring in stoppage time after Giulio Maggiore had briefly pulled Spezia back into contest.
Monaco came from behind to pull within three points of third-placed Rennes in Ligue 1 with a 3-2 victory at Roazhon Park.
Flavien Tait gave Rennes a third-minute lead, but goals from Vanderson, Wissam Ben Yedder and Myron Boadu swung the fixture firmly in Monaco’s favour. Martin Terrier reduced the margin to one with a stoppage-time penalty.
In Spain, Real Sociedad had David Silva sent off for a second bookable offence in the closing stages as they were held to a goalless draw by fifth-placed Real Betis, who preserved their two-point advantage over their hosts in the LaLiga table