St Mirren won their ninth match in a row at home when they beat Aberdeen.
Kennedy's strike put Aberdeen ahead before Anthony Stewart was shown a red card, and Mark O'Hara's penalty went in off the goalkeeper.
O'Hara scored his side's second penalty as Aberdeen toiled, and a third goal came in the final moments of the game - Greg Kiltie taking advantage of a mistake by Aberdeen's keeper to score.
Stephen Robinson's side continued their excellent home form, having last lost in Paisley on the opening day of the season, despite the fact that Jonah Ayunga had a third penalty save.
Aberdeen were handed a third straight defeat since the restart and only have themselves to blame for how they let the game slip from their grasp.
By the end of the game, the visitors were playing better football with 10 men than they were with 11.
After Kennedy had smashed in the opener from 25 yards, Stewart followed up a slack pass with an awful touch, which allowed Ayunga to steal the ball and draw the foul, which was upgraded from free- kick to penalty after a VAR check.
Stewart was sent off and O'Hara struck the post, but it was lucky for him that the ball hit off Roos' leg and trickled into the net The Aberdeen manager made two changes at the start of the second half, but within eight minutes he had made another.
Aberdeen will feel like they could have escaped with a point if St. Mirren hadn't been out of sight.
Ryan Duncan missed from a few yards out after Ylber Ramadani smashed the bar.
Their afternoon was summed up when Roos came up for a corner in the last minute of the game.
Kiltie calmly finished into an open goal after Jack MacKenzie gave the ball to him.
After six weeks out, St Mirren came back perfect.
After last week's game against Motherwell was postponed, St Mirren were forced to make it six weeks without a game, but they came back as the team they have been all season.
They caused Aberdeen problems in the box with their high crosses. Robinson could not have hoped for a better gift than Stewart did.
The credit goes to Ayunga, who capitalised on the error to set his team on their way to victory.
They were frantic. They haven't looked in complete control of games this season.
Their defence is vulnerable because they lack a calm presence in the middle of the field to recycle the ball.
Stewart is a problem at centre-back and puts his team in real trouble. They were too disorganized to respond to going down to 10 men.
The pressure was on to deliver a performance after throwing away a lead. This won't convince anyone who is concerned about the direction of the team, especially away from home where it has three wins in 27 games.
They only have one more point than they did at this time last year, when they finished 10th.
Stephen Robinson said that they were very good for 60 minutes. After missing the penalty, we looked tired and nervous.
The front two were good. The end product was not what he wanted, but he is a real threat. They gave all of the things.
It's pretty clear why it fell apart. There was a mistake at the back. He made a bad decision when he came back to Anthony Stewart.
There is no excuse for the goals we have lost. The guys who have made the mistakes are strong and big.
Both sides are back in action on the same day, with Aberdeen visiting Kilmarnock and St.Mirren travelling to Livingston.