The team on Monday announced it had selected the contract of the 25-year-old, who spent most of the season at Triple-A New Orleans.
Florida's 40-man roster now stands at 34.
The Marlins acquired Penn late in Spring Training from the Orioles for infielder Robert Andino. Out of options, Penn was on Florida's Opening Day roster. He made 16 appearances for the Marlins, including one start. He was 1-0 with a 7.77 ERA.
Penn struck out 27 and walked 20 in 22 innings.
For New Orleans, Penn appeared in 14 games, with 13 starts. The right-hander was 2-4 with a 4.11 ERA, striking out 62 and walking 26 in 70 innings.
Joe Frisaro is a reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.