The 27-year-old's contract was set to expire this summer but he will now skipper the Robins until the end of the 2014/15 campaign.
"I was always going to sign this contract," he told the club's official website. "We just needed to sort a few bits and bobs out but it's all finalised and I'm happy to say I'll be here for the next two years at least.
"Being made team captain was a big part of why I signed because I've enjoyed having the armband for the last few months and I think it has improved my game.
"The main reason I signed though was because I have loved every minute of my last two years with this club."
Penn made 51 appearances in the heart of midfield last season and wore the captain's armband during the second half of the campaign following the departure of Alan Bennett.