David Booth also scored for Florida, which won for the fourth time in six games.
Dimitry Afanasenkov scored for the Flyers, who have lost four of five. Martin Biron was solid throughout for Philadelphia, making 30 saves.
Trailing by a goal in the third period, the Flyers picked up the pace and became more physical. But Ed Belfour was equal to the task, turning back shot after shot and finishing with 24 saves.
Horton added an insurance goal at 16:13, skating down the right side and sending a blistering shot over Biron's glove and into the upper right corner. It was his 28th of the season.
Kolnik extended the lead to three goals with his 11th with just over a minute left.
Biron is 4-4-1 with the Flyers since being acquired from Buffalo on Feb. 27.
Booth opened the scoring early in the second period, when a shot from the point was knocked down in front. He scooped up the loose puck and sent a backhander past Biron for his second of the season at 2:44.
The Flyers tied it at 1-1 11 minutes later when Afanasenkov took a pass at the blue line, skated toward the net, crossed in front near the crease and sent a backhander past Belfour at 13:02.
Jokinen put Florida ahead to stay. Seconds after leaving the penalty box, Jokinen took a clearing pass from Biron in the neutral zone, circled around defenceman Braydon Coburn, went in alone and beat Biron for his 34th goal.
Jokinen, the Panthers captain, was coming off a career-high six-point game (two goals, four assists) in an 8-5 win over the New York Islanders on Saturday.
Play got chippy in the first period when Belfour wandered out of his net to clear the puck and ran into one of the Flyers in the circle. Belfour spun, and his stick swung wildly against the glass. A few seconds later, Todd Fedoruk and Belfour collided at the faceoff dot.
The goalie was sent backward onto his seat, and struck Fedoruk in the head with his stick as he fell. Belfour picked up a double-minor for high sticking, and Fedoruk was whistled for roughing, but the Panthers successfully killed the penalty.
Notes: Florida C Chris Gratton played in his 999th NHL game. Gratton has also played with Tampa Bay, Philadelphia, Buffalo, Phoenix, Colorado. ... Flyers C Mike Richards left the game in the third period with an undisclosed upper body injury and didn't return. ... Flyers D Derian Hatcher, who had scored in two straight games after going 125 without a goal, had his streak snapped. ... Philadelphia's Simon Gagne (groin) and Scottie Upshall (shoulder) didn't play. The Flyers recalled C Ryan Potulny from the Phantoms, their AHL affiliate in Philadelphia.