Keogh began his career as a trainee at Ipswich Town and Stoke City, making his professional debut on loan from the latter at Icelandic club Víkingur in 2004. He joined Bristol City on a free transfer in 2005 and made his Football League debut in September of that year. He made several more appearances that season before spending a month on loan at Wycombe Wanderers, then going on to appear sporadically for Bristol City at the end of the season, scoring his first goal in April 2006. Keogh was a regular in the first team the following season, playing 43 times in all competitions and scoring four goals. However, he found himself out of favour in the 2007–08 season, spending time out on loan at Huddersfield Town, Carlisle United and Cheltenham Town. At the end of the season, he joined Carlisle United for an undisclosed fee.
Keogh was a first-team regular for Carlisle, playing 95 times and scoring six goals in all competitions for the Cumbrians over two seasons and also a short loan spell. He also won the club's Player of the Year Award for the 2009–10 season. At the end of the season, he joined Coventry City on a free transfer and was again a near ever-present, playing 95 league and cup matches across two seasons, scoring one goal. Keogh was named the Player of the Year for the 2011–12 season, although the club was relegated from the Championship. However, he remained in the league, signing for Derby County for a fee of over £1 million. He has played over 200 matches for the club, won the club's Player of the Year Award for the 2012–13 and 2015–16 seasons and was named in the 2014–15 PFA Team of the Year.
Although Keogh was born in Essex, he has represented the Republic of Ireland at under-19, under-21 and senior level. As of September 2016, he has won 15 caps and scored once.
Keogh was born in Harlow, Essex. Having been a schoolboy in Ipswich Town's academy and a ballboy at Portman Road, Keogh moved on to the Stoke City youth set-up in January 2003. Shortly after his arrival, he was an unused substitute in a 3–0 FA Cup win against Bournemouth on 28 January after the squad was hit by a virus. Manager Tony Pulis quipped that "I think he had to get a bus to get here." Keogh was highly thought of at Stoke: he won the Young Player of the Year Award for the 2002–03 season and played a major role in the reserves winning the 2003–04 Pontins League Championship.
At the time, Stoke was owned by an Icelandic consortium and in June 2004, Keogh and striker Jermaine Palmer were sent out on loan to Icelandic club Knattspyrnufélagið Víkingur. Initially loaned out for two months, they later had their spells extended to a year. Víkingur had just been promoted to the Úrvalsdeild, the top league in Icelandic football, and in the 2004 season, Keogh played in 9 of the club's 18 league matches. Víkingur finished the season 9th out of 10 clubs and was relegated back down to the 1. deild karla. Keogh also played in 2 Icelandic Cup matches before returning to England in May 2005. He was released by Stoke City at the end of the 2004–05 season, without having made a first team appearance for the club.
After leaving Stoke City, Keogh joined up with Burnley for pre-season training. He was known to Burnley manager Steve Cotterill and his assistant Dave Kevan from their time at Stoke and they were keen to sign him. After impressing in pre-season, Keogh was offered a two-year contract and was poised to sign, but he had a change of heart and turned the offer down. Instead, just days later, Keogh signed a two-year contract with League One club Bristol City.
Keogh made his debut on 3 September 2005, starting and keeping a clean sheet as Bristol City drew 0–0 at home to Colchester United. However, the next match, in which Keogh also played 90 minutes, ended in a 7–1 defeat at Swansea City and saw manager Brian Tinnion step down. Keogh missed the next match but started the one after, a 3–1 defeat to Nottingham Forest on 20 September.
After brief substitute appearances in defeats against Brentford on 24 September and Chesterfield on 26 October, Keogh was sent out on loan by new manager Gary Johnson to League Two side Wycombe Wanderers on 9 November 2005. Keogh had an inauspicious debut, scoring an own goal in a 1–1 draw at Darlington on 12 November, though BBC Sport reporter Ian Stringer noted that "credit should go to the Darlington winger Simon Johnson" for a great cross and that Keogh was not at fault as he had "no option" but to put it past his own keeper. He played twice more in his six-week loan spell, starting in a 3–1 win against Grimsby Town on 19 November and coming on as a late substitute in a 3–0 win over Rochdale on 10 December. City manager Gary Johnson declined to let Wycombe extend the loan and Keogh returned to his parent club on 10 December.
After his loan spell ended, Keogh finally returned to Bristol City on 10 March 2006, coming off the bench in a 1–0 win at MK Dons. He had to wait almost a month for his next appearance, coming on in the 71st minute against Walsall on 8 April and scoring his first professional goal in the 90th minute to round out a 3–0 win. He made another late substitute appearance in the next match, a 2–1 win over Hartlepool United on 15 April, and his final appearance of the season came on the last day of the season, starting in a 1–0 defeat to Southend United on 6 May.
Keogh appeared sporadically at the start of the 2006–07 season, not featuring in the first three matches after suffering a head injury in a reserve match which required 15 stitches. He finally recovered to come on as a substitute in a 4–2 defeat to Blackpool on 19 August. He started in a 2–1 League Cup defeat to Cheltenham on 22 August but it was a 3–1 win against Northampton Town that was to change his fortunes. Right-back Bradley Orr was sent off on the stroke of half-time after brawling with and attempting to headbutt his own teammate, Louis Carey. Keogh was brought on at half-time as City went on to score twice to win the match.
Three days later, Orr was jailed for 28 days, one of three City players to be imprisoned for his part in a brawl outside a Bristol nightclub the previous October. Keogh started his first league match of the season on 2 September as Bristol City beat Brighton 1–0. He was an ever-present at right-back as the club hit a rich vein of form, starting 7 consecutive matches that resulted in 5 wins and 2 draws. Keogh kept his place after Orr was released early on 14 September. The latter returned to the starting line-up on 6 October, with Keogh moved to centre-back. Keogh was then an unused sub in the next game, a 2–1 win against Crewe on 14 October and played the last half an hour on 28 October as City beat Doncaster Rovers 1–0.
He returned to the starting XI in a 3–1 Football League Trophy win against Leyton Orient on 1 November, scoring in the 90th minute to complete a comeback win. He started 8 of the next 9 matches which saw City win five, draw three and lose one, with Keogh scoring again on 18 November, City's first in a 3–1 win against Gillingham. On 23 and 26 December, Keogh missed back-to-back games for the first time since August. He then made appearances from the bench in a 2–1 win against Port Vale on 30 December and a 1–1 draw with Leyton Orient on 1 January. He started at centre-back in a 3–3 draw at home to Coventry City on 6 January 2007 and was then consigned to coming off the bench for the next four league and cup matches.
He started in the middle of defence again on 27 January, scoring City's first as they came from 2–0 down to draw 2–2 against Premier League side Middlesbrough in the FA Cup, securing a replay at Riverside Stadium. Despite his heroics, he played only one of the three league matches before the replay, coming on in the 83rd minute of a 1–0 defeat to Scunthorpe United on 5 February. He played every minute of the replay, which finished 2–2 after extra time and saw City knocked out 5–4 on penalties. He kept his place in defence for the next 6 consecutive League and Cup matches, rotating between right-back and centre-back as another good run of form saw City win four, draw one and lose one. He scored in the last match of that series, the opener in a 3–1 win at Chesterfield on 7 March. He then missed the next three matches with injury and was an unused substitute for two more before coming on at half-time in a 0–0 draw with Swansea City on 7 April.
His season petered out somewhat as he started just once and came on twice out of City's last five matches. However, the season ended in success as Bristol City were promoted to the Championship as League One runners-up and Keogh was voted the club's Young Player of the Year. Out of contract at the end of the season, Keogh also had the one-year extension clause activated in his contract and was offered a new two-year deal, though he did not sign it.
Upon Bristol City's return to the Championship, Keogh found himself frozen out, as manager Gary Johnson preferred Orr or Carey at right-back and two from Carey, Liam Fontaine, Jamie McAllister and Brian Wilson at centre-back. Keogh played in only one of the club's first five League and Cup matches, a 3–0 League Cup win against Brentford on 14 August. It was the only match he played for City all season. Thus, he was loaned out to League One side Huddersfield Town on 31 August for an initial one-month spell, which was later extended for a second month. During his time at the club, he played in 10 of a possible 11 matches and scored a 90th-minute consolation goal in a 3–2 defeat to Cheltenham Town on 15 September. Huddersfield declined to extend his loan for a third month and so Keogh returned from his loan on 29 October.
When he returned from the loan spell, Keogh did not even make the bench, so he was loaned out again on 21 November for six weeks, this time to Carlisle United, also of League One. Keogh pronounced himself delighted with the move, saying that he "couldn't wait" to get playing regular football again and that he was relishing the prospect of playing for a club that were "top of the league and flying at the moment... [manager] John Ward must think I'm capable of doing a good job." He started in all seven of the club's matches during his loan spell, helping the club to three wins and two draws. Keogh's loan spell ended on 2 January and Carlisle were sufficiently impressed to make an offer to sign Keogh permanently two days later, but it was rejected as City manager Gary Johnson thought it was "nowhere near our valuation".
Upon his return to City, he still wasn't named in a single matchday squad and so returned to League One on loan for a third time on 11 March, this time with Cheltenham Town. He went straight into the starting XI on the day of his arrival, helping the club to a 2–1 win away at Leeds United. His one-month loan was later extended to the end of the season and he played every minute of the 10 Cheltenham matches that his loan period covered. Manager Keith Downing said that he was "very pleased" with Keogh's performances, calling him a "tremendous asset" who "strengthened the defence" and formed a partnership at centre-back with Shane Duff that was as good as any in the League. Keogh helped the club to four wins and two draws, The Robbins finished 19th and three points above the relegation zone. In July 2008, with Keogh out of contract at the end of the season, clubs began to show an interest in signing him, though due to his age City were entitled to compensation. Keogh was again offered a new contract but the club openly admitted that they expected him to leave, with newly promoted Championship club Doncaster Rovers and League One clubs Southend United and Carlisle United interested in signing him.
Keogh spent time on trial with Doncaster Rovers but on 20 August 2008, it was announced that he had returned to Carlisle United on a permanent transfer from Bristol City, signing a two-year contract for an undisclosed fee. Keogh said that although he spoke to a lot of clubs, "in my heart of hearts I always wanted to come back to Carlisle." Manager John Ward said that he was "delighted" to have re-signed Keogh, calling him an "excellent signing".
After not making the matchday squad for the first three matches of the season, Keogh came off the bench in the 90th minute against Leyton Orient on 23 August after the Cumbrians had been reduced to 10 men. As of May 2016, it is the last time Keogh has made a substitute League appearance. All of his subsequent 300+ League appearances have been starts. He was an unused substitute for the next four League and Cup matches, making his first start of the season on 20 September, in a 2–0 defeat to Leeds United. Keogh came in because of an injury to centre-back Peter Murphy and said that Murphy's injury was "unfortunate", "from a selfish point of view though it was a great opportunity for me and I feel like I did well." He said that he was determined to push on and remain in the starting XI.
He was indeed an ever-present for the next six League and Cup matches, until he was sent off for the first time in his career, receiving a straight red card in a 1–0 defeat to Hereford United on 21 October. He elbowed Hereford striker Steve Guinan and was suspended for three matches. Carlisle were enduring a torrid run of form and manager John Ward feared that the club were being pulled into a relegation dogfight. After winning four of their first five league matches, they had then lost six of their last eight and went on to lose thrice more during Keogh's suspension. After the third loss, a 3–0 defeat at Stockport United, Ward left by mutual consent.
Keogh returned from suspension to be an unused sub during an FA Cup match with Grays Athletic on 8 November that ended 1–1. He returned to the first eleven in the next match, a 3–1 win over Brighton on 15 November. Keogh played in all of the next seven matches as well, Carlisle finishing with three wins, a draw and four defeats. Keogh was rested to the bench for a 3–0 win at home to Huddersfield Town on 26 December, returning for the following match, a 0–0 draw away at Oldham on 28 December. However, Keogh then fell out of favour and was an unused substitute for the next five matches.
He was an ever-present for the remaining eighteen matches of the season, beginning with a 1–1 draw at home to Walsall on 10 February and he scored his first goal for Carlisle in a 2–0 win away to Brighton on 14 February. The team only lost six of the last eighteen, but only won two, seven of the eight draws finishing 1–1. The Cumbrians finished the season 20th, one place and one point above the relegation zone. A 2–0 win away at Millwall on 2 May on the final day of the season secured their survival, their first win in two months. Although, had Northampton won as well, they would have survived instead.
Keogh started the first four matches of the season, from which Carlisle finished with two wins and a draw. However, he then suffered an ankle ligament injury in a 2–1 win at Stockport County on 18 August, which kept him out of action for over a month, missing seven League and Cup matches. He made his comeback as a late substitute in a 3–1 League Cup defeat to Portsmouth on 22 September. He stepped up his recovery by playing 68 minutes of a reserve match against Oldham on 23 September, impressing his manager Greg Abbott with his hard work, determination and fitness levels. The next first team match was against Southampton on 26 September and Keogh started that and every other League and Cup match for the rest of the season, being named man-of-the-match against The Saints.
He scored his first goal of the season in a 2–2 draw away to Walsall on 3 October, a late header which rescued a point. He was booked for his celebration, running over to the away fans and embracing them, a decision which Keogh described as "scandalous". It was the first of four goals he scored in a run of seventeen matches that ended with ten wins and three draws for Carlisle. A disappointing run of only four wins out of seventeen matches saw the club slip back down the table. However, five wins from the final 11 league matches saw the club finish safely in 14th place. They also reached the final of the 2009–10 Football League Trophy, having beaten Morecambe, Macclesfield Town, Chesterfield, Bradford City and Leeds United along the way. The final, on 28 March, finished in a 4–1 defeat to Southampton.
Keogh won the club's Player of the Year Award and became somewhat of a cult hero at Brunton Park, with one group of supporters carrying a giant "In Keogh We Trust" banner across the country in support of Carlisle. With his contract expiring at the end of the season, Keogh's form attracted attention from, amongst others, Scottish Premier League club Hibernian, fellow League One team Bristol Rovers and Championship side Coventry City. Keogh rejected a new contract at Carlisle and, on 28 June, it was announced that he would join Coventry City. As he was under 24, Carlisle were entitled to compensation, which was undisclosed.
Keogh signed a three-year deal with Coventry, becoming the fourth close season signing for new manager Aidy Boothroyd. Boothroyd described Keogh as a "hungry player who comes here looking to prove himself and that's exactly the type of character we want." Keogh officially transferred to Coventry on 1 July 2010 after his contract with Carlisle United had expired. Keogh played every minute of every game for this season 2010–11, and scored his first goal for Coventry on the last game of the season against Norwich. He was voted Players' Player of the Year at the end of the 2010–11 season awards for Coventry City.
Keogh played every game for Coventry since signing for the club, until his unfortunate dismissal in the game at home to Doncaster Rovers on 21 April 2012, which brought an end to a run of 91 consecutive games played. Despite Coventry City's relegation from the Championship, Keogh won the Player of the Year award for the second consecutive season at Coventry's end of season awards. He also won the Players' Player of the Year awards.
In May 2012, Coventry rejected a £250,000 bid from Bristol City and a £800,000 from Cardiff City, as they opened contract negations with Keogh. Leeds United also expressed a desire to sign him and in July another bid from Cardiff City was rejected, believed to be in the region of £800,000. Fellow Championship club Derby County had a reported £800,000 bid accepted on 17 July 2012. Cardiff pulled out of the bidding two days later after refusing to match Derby's wage offer.
On 19 July 2012, Keogh signed a three-year contract at Derby County, for an undisclosed fee believed to be in excess of £1 million. A day later, Keogh was named Derby County's new captain, replacing the departed Jason Shackell, who covered the role after Shaun Barker's season-long injury. Keogh was also captain at Coventry and said, "I thrive on the pressure. I feel it brings out the best in me. It's something I look forward to and I cannot wait to get out there and play."
Keogh scored on his debut against Scunthorpe United in the League Cup, an extraordinary game which Derby had led 3–0, 4–1, and 5–3 but which ended in a 5–5 draw before Derby then lost 6–7 on penalties. Keogh was an ever-present in Derby's 2012–13 season, one of only two outfield players to play in every minute of every game in the Championship and praised the team spirit at the club as well as the management style of Nigel Clough. He finished his first season as a Derby player with an impressive tally of five goals. He was awarded Derby County's Player of the Season award ahead of the club's final home game of the season against Millwall, as well as the Players' and Supporters' awards. Keogh was the only Championship defender bar Aaron Cresswell to feature in every minute of league action during the season. He was named the fifth best defender and 19th best player in the 2012–13 Football League Championship by the Actim Index.
Keogh was again considered the first choice centre-back at the club by Clough ahead of the 2013–14 season. The 2013–14 season ended in heartbreak for Keogh. His mistake led to Bobby Zamora scoring the winning goal in stoppage time of the Championship play-off final. In September 2014, he signed a new three-year contract with Derby. In April 2015, he was named in the PFA Championship Team of the Year. Keogh was an ever-present alongside Jason Shackell at the heart of Derby's defence as the side lost out 3–2 on aggregate to Hull in the Championship play-off semi-final.
Keogh scored the only goal in The Rams' 1–0 win over Grimsby Town in the EFL Cup on 9 August 2016. Two days later, he signed a new three-year contract, committing his future to the club until the summer of 2019.
Keogh won six caps for the Republic of Ireland under-19s in 2005. He made his debut for the under-21s on 14 February 2006. He also captained the under-21 side.
In January 2013, Keogh was called up to the senior squad for the first time to play in a friendly against Poland on 6 February. Keogh made his debut in the game, which Ireland won 2–0, as an 84th-minute substitute for Ciaran Clark. He scored his first goal for Ireland in a 4–0 win on 2 June in a friendly against Georgia. He captained the Republic of Ireland for the first time in a friendly against Oman at the Aviva Stadium, a moment which he described as the "proudest of my career".
Keogh played in both legs of Ireland's Euro 2016 qualifying play-off matches against Bosnia and Herzegovina. He was named Man of the Match in the first leg by Talksport and helped Ireland to a 2–0 win in the second as they advanced to the finals 3–1 on aggregate.
Keogh captained Ireland for the second time on 31 May 2016 in the 2–1 home defeat to Belarus. At Euro 2016, Keogh was an unused sub for Ireland's first two group matches. He was then brought in to the starting eleven for Ireland's final two games; partnering Shane Duffy at centre-back against Italy and France respectively.As of match played 14 February 2017
As of match played 1 June 2017
As of match played 5 September 2016
Ireland score listed first, score column indicates score after each Keogh goal.
Bristol CityLeague One: Runner-up: 2006–07
Bristol CityYoung Player of the Year: 2006–07
Carlisle UnitedPlayer of the Year: 2009–10
Coventry CityPlayer of the Year: 2011–12
Players' Player of the Year: 2010–11, 2011–12
Derby CountyPlayer of the Year: 2012–13, 2015–16
Players' Player of the Year: 2012–13, 2015–16
Supporters' Player of the Year: 2012–13
PFA Championship Team of the Year: 2014–15