Riccardo Orsolini gave Bologna the lead in the 51st minute with a solo goal before Parma goalkeeper Luigi Sepe, who had kept his side in the game with a string of first-half saves, had a nightmare moment just before the hour mark.
Sepe misjudged an Erick Pulgar free kick, as the ball hit the post and then bounced off his hand into the net for Bologna's second.
Two minutes later, Parma defender Bruno Alves was booked for a tackle on Orsolini, then tried to pull the player up which started a pushing match and the Portuguese was sent off.
Lyanco headed home Bologna's third goal and Roberto Inglese pulled one back for the visitors before substitute Francisco Sierralta deflected a Pulgar shot into his own net as Bologna completed a sixth successive home win.
The victory took Bologna, who have enjoyed an impressive revival under Sinisa Mihajlovic, to 40 points, five clear of the danger zone, while Parma have 38 points, only three above the relegation places, with two rounds of the season remaining.