Suso and substitute Fabio Borini scored either side of half-time to lift the Rossoneri to within three points of fourth-placed Atalanta.
Much of the headlines, however, will be allocated elsewhere after the on-loan Bakayoko - recently rebuked for missing a training session - seemingly rejected the opportunity to replace the injured Lucas Biglia, prompting a terse exchange with head coach Gattuso.
Mattia Destro halved the deficit and Lucas Paqueta was sent off in five frantic second-half minutes, but Milan were not to be denied their second win in nine matches in all competitions, with two Bologna players also seeing red either side of full-time.
Bologna started with the confidence of a team that had won six of their previous eight matches and Riccardo Orsoli drew a good save from Gianluigi Donnarumma inside the first 15 minutes.
Gattuso's argument with Bakayoko - reportedly sparked by the midfielder's desire for more time to warm-up - seemed to blur Milan's focus and only an offside flag against Rodrigo Palacio prevented them from falling behind.
Instead, eight minutes before half-time, the hosts took the lead, Suso shimmying away from a couple of challenges and picking out the bottom-right corner.
Hakan Calhanoglu sent a shot whistling over the crossbar soon after the interval and then had to follow Biglia to the bench with a suspected muscle issue.
His replacement, Borini, gave Milan a two-goal buffer in the 67th minute, the former Liverpool forward making no mistake after Lukasz Skorupski pushed a deflected Paqueta effort into his path.
An unmarked Destro swivelled on a cute Nicola Sansone pass and replied for Bologna five minutes later before Paqueta clashed with Erick Pulgar and was given his marching orders for slapping referee Marco Di Bello's hand in response to an initial booking.
There were two more dismissals to come in the moments either side of the full-time whistle as Bologna pair Sansone and Mitchell Dijks saw red in a bizarre ending to a chaotic contest.
What does it mean? Rossoneri back on track in top-four battle
The microscope fell on Milan after Inter, Roma and Torino all dropped points over the weekend and, while there was plenty to digest after a turbulent 90 minutes, the key takeaway is that Gattuso's men are firmly in the hunt for the top four.
Maximum points may be needed from the remaining matches, but this hard-earned triumph could prove crucial to the club's Champions League aspirations.
Donnarumma delivers commanding display
Milan often looked vulnerable in the absence of suspended captain Alessio Romagnoli and owe a great debt to Gianluigi Donnarumma.
The goalkeeper hit peak form in Monday's match, making excellent saves in both halves and conceding only because his team-mates clocked off when Destro cushioned Sansone's pass.
Bakayoko in fresh bust-up
Already in Gattuso's bad books, Bakayoko's time in Milan might just have come to a conclusion.
The 24-year-old raised his coach's ire by the glacial pace of his preparations to replace Biglia and, though he may protest he did little wrong, the sight of him seeming to bad-mouth the boss did not paint a good picture.
Key Opta Facts
- Milan have won five of their last seven home league games (D1, L1).
- Fabio Borini has scored for Milan after eight Serie A games without a goal. His last strike came in January against Genoa.
- Bologna have conceded at least two goals in all of their last six Serie A away games (W1, D1, L4).
- It was the second game of this Serie A season with three red cards; the first was Torino-Cagliari in April.