Poulsen started his senior career in 2002 for HFK Sønderjylland in the Danish 1st Division, the second tier of professional football in Denmark. He played four seasons at HFK Sønderjylland. The club changed its name to SønderjyskE in 2003, and Poulsen helped it win promotion to the Danish Superliga in 2005.
In June 2005, he agreed to move to league rivals FC Midtjylland (FCM) in the summer 2006, at the end of the 2005–06 Superliga season. SønderjyskE complained about the tapping-up of Poulsen to the Danish Football Association, but agreed to let Poulsen go in August 2005. Having played five Superliga games for SønderjyskE, Poulsen went to FCM, with Thomas Rathe switching from FCM to SønderjyskE as a replacement. He established himself in the FCM team, and only missed one Superliga game in his first six months at the club. He suffered an injury in February 2006, and returned to the team in May 2006. In the first half of the Danish Superliga 2007-08 season, he scored 3 goals in 18 games, and was included as left winger in the 2007 Danish Team of the Year.
On 23 December 2007, Poulsen transferred to Dutch side AZ Alkmaar for a reported transfer fee of €3,000,000, as the most expensive player sold by FCM at the time. He could not break into coach Louis van Gaal's starting line-up as a winger, and was eventually moved to the position of left-back. He played a number of games in the position, as AZ won the 2008–09 Eredivisie championship, the first club championship since 1981.
On 25 August 2012, Poulsen joined the Italian Serie A side U.C. Sampdoria on a three-year contract.
After his contract with Sampdoria had been dissolved on 16 January 2014, he rejoined his former team AZ Alkmaar.
On 15 May 2015, Poulsen signed for PSV. He was added as cover for incumbent PSV left-back Jetro Willems.
On 31 January 2017, Poulsen returned to former club SønderjyskE.
Poulsen made his international debut for the Danish under-19 national team in September 2002, and went on to play a combined 25 games and score one goal for various Danish youth selections. In May 2006, Poulsen was selected for the Danish under-21 national team squad for the 2006 European Under-21 Championship. In all, he played 11 games and scored one goal for the Danish under-21 national team. He was called up for the Denmark League XI national football team, and played unofficial national team games against the United States, El Salvador and Honduras in January 2007.
Poulsen was called up for the Danish national team in March 2007, by national team manager Morten Olsen. He made his national team debut in a friendly match against Germany, coming on as a substitute for Dennis Rommedahl. He took part in two UEFA Euro 2008 qualification in November 2007, after which his international career went on a hiatus. He was recalled to the team in May 2010, ahead of the 2010 FIFA World Cup, as Olsen thought he had improved in the back position. He took part in the friendly match against Senegal, and was included in Olsen's final World Cup squad.
On 14 June in their first 2010 FIFA World Cup group match against the Netherlands, Poulsen had a crucial part in Daniel Agger's own goal by heading the ball against his back inside the first minute of the second half which deflected past the Danish goalkeeper, thus giving the Dutch the lead.SønderjyskE
Danish 1st Division (1): 2004–05
Eredivisie (1): 2008–09
Johan Cruijff Shield (1): 2015
Eredivisie (1): 2015-16