Encore joueur de Ligues mineures, il est transféré le au Marlins de la Floride à l'occasion d'un échange impliquant plusieurs joueurs. Penny fait ses débuts en Ligue majeure avec les Marlins le .
Penny participe activement à la belle saison 2003 des Marlins qui s'achève en victoire en Série mondiale.
Penny est échangé aux Dodgers de Los Angeles le . Il honore deux sélections au Match des étoiles (2006 et 2007) pendant son séjour sous les couleurs des Dodgers. Il devient agent libre après la saison 2008.
Le , Penny signe un contrat d'un avec les Red Sox de Boston[3]. Libéré à la fin août après avoir perdu 8 décisions sur 15 en 24 départs avec Boston, pour qui il présente une moyenne de points mérités élevée à 5,61, il signe presque immédiatement avec les Giants de San Francisco. Il termine l'année avec 4 victoires, une seule défaite et une moyenne de 2,59 en 6 départs pour les Giants.
En , Penny est agent libre et conclut une entente d'un an avec les Cardinals de Saint-Louis[4]. Il effectue neuf départs pour les Cards en 2010, présentant une fiche de 3-4 et une moyenne de points mérités de 3,23. Sa saison prend fin lorsqu'il est placé le 22 mai sur la liste des joueurs blessés pour des maux de dos[5].
En janvier 2011, Penny signe un contrat d'une saison avec les Tigers de Detroit[6]. En 31 départs pour eux, il remporte 11 victoires et subit 11 défaites avec une moyenne de points mérités de 5,30. Retiré de la rotation de lanceurs partants des Tigers lors des séries éliminatoires, il ne fait qu'une seule apparition en parties d'après-saison et donne cinq points mérités en seulement une manche et deux tiers lancées dans le 6e et dernier match de Série de championnat, que les Tigers perdent 15-5 devant les Rangers du Texas pour voir leur saison prendre fin[7].
En février 2012, Penny signe un contrat d'un an avec une équipe du Japon, les Fukuoka SoftBank Hawks[8]. L'aventure est de courte durée puisqu'il ne fait qu'un départ et est libéré de son contrat après une mauvaise performance[9]. Le , il signe un contrat des ligues mineures avec les Giants de San Francisco[9], pour qui il avait brièvement lancé en 2009. D'abord assigné au club-école de Fresno pour retrouver la forme, il effectue une première sortie en 2012 comme releveur contre Cincinnati le 30 mai[10]. Ses performances sont désastreuses au cours de son bref retour chez les Giants : en 28 manches lancées lors de 22 sorties en relève, sa moyenne de points mérités s'élève à 6,11.
Sans contrat en 2013, Penny tente un retour chez les Royals de Kansas City au printemps 2014. Mais ses performances au camp d'entraînement ne sont pas à la hauteur et il est libéré le après s'être blessé à la main en donnant un coup de poing dans un mur[11].
Le , il signe un contrat avec les Marlins de Miami, son premier club. Le suivant, il joue son premier match depuis le avec cette équipe[12] et remporte la victoire sur les Reds de Cincinnati[13]. Il effectue 4 départs et ajoute 4 présences en relève pour les Marlins mais accorde 19 points mérités en 26 manches, pour une moyenne de 6,58.
Le , il signe un contrat des ligues mineures avec les Blue Jays de Toronto[15]. Penny annonce sa retraite le [16]. En 349 matchs joués, dont 319 comme lanceur partant, sur 14 saisons, Brad Penny compte 121 victoires contre 101 défaites, avec 4 matchs complets dont deux blanchissages. Sa moyenne de points mérités se chiffre à 4,29 en 1 925 manches lancées. Il a réussi 1 273 retraits sur des prises.