Nigel Adkins' side had seen their cushion at the summit disappear following successive defeats to Bristol City and Brighton.
But goals from Guly Do Prado, David Connolly and Morgan Schneiderlin got Saints back on track as they remained ahead of the Hammers on goal difference thanks to their first away victory in the league in over two months.
For Forest, who had captain Luke Chambers sent off early in the second half, it signalled a fifth straight home league loss and kept them languishing in the relegation places.
At Fratton Park, West Ham kept up the pressure as Mark Noble's first-half penalty proved enough to secure a 1-0 win over Portsmouth, who had David Norris sent off after the break.
The only goal arrived in the 24th minute when Noble and Winston Reid played a clever one-two before the latter was brought down by Tal Ben-Haim in the box.
Referee Kevin Friend did not hesitate to point to the spot and Noble stroked home his fourth penalty of the season despite Stephen Henderson getting a hand to it.
Portsmouth's chances of claiming something from the game were dealt a critical blow after 57 minutes when Norris was dismissed for a foul on Reid.
Second-placed West Ham are now four points ahead of Cardiff after the third-placed Welsh outfit were held to a 0-0 draw at lowly Doncaster.
Fourth-placed Middlesbrough also slipped up, losing 2-0 at home to Burnley.
Tony Mowbray's side suffered back-to-back league defeats for the first time in 11 months as Jay Rodriguez gave Eddie Howe's Clarets an early lead, before Kieran Trippier fired home from distance in the 28th minute.
Robert Koren gave Nick Barmby the perfect start as the full-time manager of Hull as his first-half strike clinched a 1-0 win over Peterborough at the KC Stadium.
Marlon King bagged a brace as sixth-placed Birmingham outlined their promotion credentials by thrashing nine-man Millwall 6-0 at The Den.
Curtis Davies gave Chris Hughton's side an 18th-minute lead before Lions defender Shane Lowry was sent off for an off-the-ball incident with Nikola Zigic.
Zigic was at the centre of the action again as he was felled by Alan Dunne's tackle from behind, with the defender also given a straight red card.
From there on, Birmingham ran riot as strikes from King and then Chris Burke ensured the points would go to the Midlands outfit.
Further efforts from Adam Rooney, another from King and Nathan Redmond ensured Birmingham extended their unbeaten run to six matches in some style.
Elsewhere, Derby defeated Coventry 1-0, Brighton beat Bristol City 2-0, Crystal Palace drew 1-1 with Leeds, Ipswich drew 2-2 against Blackpool and Barnsley won 2-1 at Leicester.
Source: AFP
Source: AFP